1. 程式人生 > >如何檢視依賴第三方jar後,最低要求專案執行的jdk版本

如何檢視依賴第三方jar後,最低要求專案執行的jdk版本

在jar包下會存在一個META-INF目錄,該目錄下有一個MANIFEST.MF檔案,這個檔案以鍵值對的形式儲存一些關於jar包的關鍵資訊。下面我以dubbo的MANIFEST.MF檔案做為示例:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: dubbo
Build-Jdk: 1.6.0_30
Specification-Title: Dubbo
Specification-Version: 2.4.9
Specification-Vendor: Alibaba
Implementation-Title: Dubbo
Implementation-Version: 2.4.9
Implementation-Vendor-Id: com.alibaba
Implementation-Vendor: Alibaba

上面只是 提供方的provider模組使用的jdk版本 並不一定是人家專案的使用的jdk版本 僅僅是idea 的language level

當然 這個是忘調成1.8了

 此專案 正常模組language level都是1.8

如果要看 依賴的provider jar 最低要求執行起來的jdk版本 可以如下方法:

將jar包依賴進一個工程,隨便找其jar包裡的一個.class檔案

可以看到 最低要求你專案的jdk版本1.7才能執行起來

方法二:通過反編譯.class檔案來檢視。

解壓jar包,得到.class檔案。用JDK自帶的javap反編譯.class檔案,用如下命令:

javap -v JavaSource.class
  檢視得到的資訊中,major version屬性的內容,如下:

major version: 52 //主版本號
minor version: 0 //小版本號
  說明這個.class檔案是由JDK1.8編譯得到的。

J2SE 8.0 = 52(0x33 hex)
J2SE 7.0 = 51(0x32 hex)
J2SE 6.0 = 50 (0x32 hex)
J2SE 5.0 = 49 (0x31 hex)
JDK 1.4 = 48 (0x30 hex)
JDK 1.3 = 47 (0x2F hex)
JDK 1.2 = 46 (0x2E hex)
JDK 1.1 = 45 (0x2D hex)

之前查資料,有人說檢視jar包中的META-INF\MANIFEST.MF檔案,Build-Jdk屬性,經過驗證這是執行打包工具的JDK版本,並不是jar包的版本