欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JDK?version和class?file?version(Class編譯版本號(hào))對(duì)應(yīng)關(guān)系解讀

 更新時(shí)間:2023年07月21日 16:12:33   作者:lzhfdxhxm  
這篇文章主要介紹了JDK?version和class?file?version(Class編譯版本號(hào))對(duì)應(yīng)關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

JDK version和class file version(Class編譯版本號(hào))對(duì)應(yīng)關(guān)系

JDK 19 = 63,

JDK 18 = 62,

JDK 17 = 61,
JDK 16 = 60,
JDK 15 = 59,
JDK 14 = 58,
JDK 13 = 57,
JDK 12 = 56,
JDK 11 = 55,
JDK 10 = 54,
JDK 9 = 53,
JDK 8 = 52,
JDK 7 = 51,
JDK 6.0 = 50,
JDK 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45.0-45.6

可以使用下列的方式來查看

使用文本編輯器EmEditor等以16進(jìn)制方式打開.class文件,

在魔數(shù)之后的就是次版本號(hào)和主版本號(hào):

圖中紅框中的代表版本號(hào)52.0

  • 次版本號(hào):00 00   (小數(shù)點(diǎn)后面的部分)
  • 主版本號(hào):00 34   (小數(shù)點(diǎn)前面的部分)對(duì)應(yīng)的10進(jìn)制為52,對(duì)應(yīng)的jdk版本為jdk8

各個(gè)版本的對(duì)應(yīng)關(guān)系

JDK版本號(hào)Class版本號(hào)16進(jìn)制
1.145.000 00 00 2D
1.246.000 00 00 2E
1.347.000 00 00 2F
1.448.000 00 00 30
1.549.000 00 00 31
1.650.000 00 00 32
1.751.000 00 00 33
1.852.000 00 00 34

備注:

文件結(jié)構(gòu)可以在JVM規(guī)范里查看,鏈接里是Java SE 19的版本 Chapter 4. The class File Format (oracle.com)

https://docs.oracle.com/javase/specs/jvms/se19/html/jvms-4.html#jvms-4.1

其它jdk版本的話,更改下鏈接里的se后的值就行。

jar包對(duì)不同JDK版本的兼容性問題:Unsupported major.minor version 52.0

Unsupported major.minor version 52.0 這類錯(cuò)誤是因?yàn)镴ava版本不一致造成的,在高版本的JDK(1.8)環(huán)境中編譯JAR包,然后JAR在低版本的JVM(1.6)中運(yùn)行

The issue is because of Java version mismatch. Referring to the Wikipedia Java Class Reference :

  • J2SE 8 = 52
  • J2SE 7 = 51
  • J2SE 6.0 = 50
  • J2SE 5.0 = 49
  • JDK 1.4 = 48
  • JDK 1.3 = 47
  • JDK 1.2 = 46
  • JDK 1.1 = 45

These are the reported major numbers. The error regarding the unsupported major.minor version is because during compile time you are using a higher JDK and a lower JDK during runtime.

解決的方法

那么現(xiàn)在如果碰到這種問題該知道如何解決了吧,還會(huì)像我所見到有些兄弟那樣,去找個(gè) 1.4 的 JDK 下載安裝,然后用其重新編譯所有的代碼嗎?

其實(shí)大可不必如此費(fèi)神,我們一定還記得 javac 還有個(gè) -target 參數(shù),對(duì)啦,可以繼續(xù)使用 1.5 JDK,編譯時(shí)帶上參數(shù) -target 1.4 -source 1.4 就 OK 啦,不過你一定要對(duì)哪些 API 是 1.5 JDK 加入進(jìn)來的了如指掌,不然你的 class 文件拿到 JVM 1.4 下就會(huì) method not found。

目標(biāo) JVM 是 1.3 的話,編譯選項(xiàng)就用 -target 1.3 -source 1.3 了。

其實(shí)這種方式挺不方便,因?yàn)槟阆螺d的Eclipse工具有可能不支持低版本的JSK

所以,最簡(jiǎn)單方式還是對(duì) Eclipse 的項(xiàng)目屬性的設(shè)置(項(xiàng)目右鍵 -> properties -> Java Compiler, 設(shè)置"Compeler compliance settings"為1.6),如圖

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論