class版本不兼容錯誤原因分析

在JDK 1.6工程中使用外部JAR包的時候經常碰到這樣的問題:Unsupported major.minor version 51.0。

爲了解決這個問題,首先我們要明白:major.minor version的含義。

major.minor version是在class文件中定義的,表示class文件的版本。例如:

JDK 1.7 –target 1.7 版本號51.0

JDK 1.7 –target 1.6 版本號50.0

JDK 1.7 –target 1.5 版本號49.0

其中,-target指定生成的class文件將保證和哪個版本的虛擬機進行兼容。我們可以通過-target 1.7來保證生成的class文件能在1.7虛擬機上進行運行,但是1.6的虛擬機就不能保證了。在編譯過程中,還經常會使用到-source參數,-source 指定用哪個版本的編譯器對java源碼進行編譯。例如:javac -source 1.7 -target 1.7 Test.java

在class文件中,第五字節和第六字節是次版本號,第七字節和第八字節是主版本號。高版本的JDK能向下兼容之前版本的class文件,但是不能運行以後版本的class文件。例如JDK 1.7版本,可生成的class文件主版本號的最大值是51.0。所以,Unsupported major.minor version 51.0錯誤的原因是:JDK 1.6不能運行JDK 1.7編譯的class文件。

以上就是我的分享,感謝各位大佬們耐心看完文章,最後再分享一個我自己的後端技術羣,羣裏自己收集了很多Java架構資料,大家可以進羣免費領取資料,羣號:680075317,也可以進羣一起交流,比如遇到技術瓶頸、面試不過的,大家一些交流學習!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章