亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java獲取版本號及字節(jié)碼編譯版本方法示例

 更新時間:2017年10月16日 08:59:15   作者:蔣固金  
這篇文章主要給大家介紹了關于java獲得版本號及字節(jié)碼編譯版本的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或使用java具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

之所以會有這篇文章,是因為公司的開發(fā)環(huán)境比較老,尋找一些jar包的時候總是會糾結對應的編譯版本,感覺很麻煩,所以寫了一個工具類用于讀取class或jar文件的編譯版本,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

示例代碼

package com.jinggujin.util;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

/**
 * Java 版本工具
 * 
 * @author jianggujin
 *
 */
public class JavaVersionUtils
{
 private static final int JAVA_CLASS_MAGIC = 0xCAFEBABE;

 public final static int JDK_1_2 = 46;
 public final static int JDK_1_3 = 47;
 public final static int JDK_1_4 = 48;
 public final static int JDK_5 = 49;
 public final static int JDK_6 = 50;
 public final static int JDK_7 = 51;
 public final static int JDK_8 = 52;

 /**
 * 獲得當前環(huán)境JDK版本
 * 
 * @return
 */
 public static int getJDKVersion()
 {
 String version = System.getProperty("java.version");
 if (version != null && version.matches("1\\.\\d.*"))
 {
  int v = Integer.parseInt(version.charAt(2) + "");
  if (v >= 2)
  {
  return 44 + v;
  }
 }
 return -1;
 }

 /**
 * 獲得class或jar編譯版本
 * 
 * @param file
 * @return
 * @throws Exception
 */
 public static int getCompileVersion(File file) throws Exception
 {
 if (file == null || !file.isFile() || !file.getName().matches(".*\\.((jar)|(class))"))
 {
  throw new IllegalArgumentException("the file must be a jar or class.");
 }
 int version = -1;
 if (file.getName().endsWith("jar"))
 {
  JarFile jarFile = new JarFile(file);
  Enumeration<JarEntry> enumeration = jarFile.entries();
  while (enumeration.hasMoreElements())
  {
  JarEntry entry = enumeration.nextElement();
  if (entry.getName().endsWith(".class"))
  {
  InputStream in = jarFile.getInputStream(entry);
  version = getVersion(in);
  in.close();
  break;
  }
  }
  jarFile.close();
 }
 else
 {
  InputStream in = new FileInputStream(file);
  version = getVersion(in);
  in.close();
 }
 return version;
 }

 private static int getVersion(InputStream in) throws Exception
 {
 DataInputStream dis = new DataInputStream(in);
 // ,前面8個字節(jié)CA FE BA BE 是固定的,之后4個字節(jié)是次版本號,次版本號后面的4個字節(jié)是jdk的版本號
 int magic = dis.readInt();
 if (magic == JAVA_CLASS_MAGIC)
 {
  // int minorVersion =
  dis.readUnsignedShort();
  int majorVersion = dis.readUnsignedShort();
  // Java 1.2 >> 46
  // Java 1.3 >> 47
  // Java 1.4 >> 48
  // Java 5 >> 49
  // Java 6 >> 50
  // Java 7 >> 51
  // Java 8 >> 52
  return majorVersion;
 }
 return -1;
 }
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Mybatis中動態(tài)SQL,if,where,foreach的使用教程詳解

    Mybatis中動態(tài)SQL,if,where,foreach的使用教程詳解

    MyBatis的動態(tài)SQL是基于OGNL表達式的,它可以幫助我們方便的在SQL語句中實現某些邏輯。這篇文章主要介紹了Mybatis中動態(tài)SQL,if,where,foreach的使用教程,需要的朋友可以參考下
    2017-11-11
  • Java微服務開發(fā)之Swagger詳解

    Java微服務開發(fā)之Swagger詳解

    Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調用和可視化 RESTful 風格的 Web 服務??傮w目標是使客戶端和文件系統(tǒng)作為服務器以同樣的速度來更新。文件的方法,參數和模型緊密集成到服務器端的代碼,允許API來始終保持同步
    2021-10-10
  • SpringBoot+Hutool實現圖片驗證碼的示例代碼

    SpringBoot+Hutool實現圖片驗證碼的示例代碼

    圖片驗證碼在注冊、登錄、交易、交互等各類場景中都發(fā)揮著巨大作用,本文主要介紹了SpringBoot+Hutool實現圖片驗證碼的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • SpringBoot配置log4j2的實現示例

    SpringBoot配置log4j2的實現示例

    SpringBoot中默認使用Logback作為日志框架,本文主要介紹了SpringBoot配置log4j2的實現示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 如何使用Java模擬退火算法優(yōu)化Hash函數

    如何使用Java模擬退火算法優(yōu)化Hash函數

    為了解決局部最優(yōu)解問題,1983年,Kirkpatrick等提出了模擬退火算法(SA)能有效的解決局部最優(yōu)解問題。模擬退火算法包含兩個部分即Metropolis算法和退火過程。Metropolis算法就是如何在局部最優(yōu)解的情況下讓其跳出來,是退火的基礎
    2021-06-06
  • Java8深入學習系列(一)lambda表達式介紹

    Java8深入學習系列(一)lambda表達式介紹

    Java8最值得學習的特性就是Lambda表達式和Stream API,所以我們學習java8的第一課就是學習lambda表達式,下面這篇文章主要給大家介紹了關于Java8學習之lambda的相關資料,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • springcloud gateway如何實現路由和負載均衡

    springcloud gateway如何實現路由和負載均衡

    這篇文章主要介紹了springcloud gateway如何實現路由和負載均衡的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 一道Java集合框架題 多種解題思路

    一道Java集合框架題 多種解題思路

    這篇文章主要介紹了一道Java集合框架題,多種解題思路,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • java實現PPT轉化為PDF

    java實現PPT轉化為PDF

    這篇文章主要為大家詳細介紹了java實現PPT轉化為PDF的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 關于thymeleaf判斷對象是否為空的相關邏輯處理

    關于thymeleaf判斷對象是否為空的相關邏輯處理

    這篇文章主要介紹了關于thymeleaf判斷對象是否為空的相關邏輯處理,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評論