怎麼知道Java class檔案JDK編譯的版本號
阿新 • • 發佈:2019-01-28
首先用一些二進位制檢視器開啟class檔案,比如od或者hexdump工具。
od -x hello.class
或者
hexdump hello.class
我們會看到類似於下面的輸出:
feca beba 0000 3300
這裡我們看到前四個位元組是Java class的特殊符號,叫做magic欄位,用來告訴JVM這是個class檔案,之後的兩個位元組是minor版本號,再之後的兩個位元組是major版本號,我們看到時33,對應下表我們知道33時JDK1.7編譯的版本號。
十六進位制
JDK1.5 31
JDK1.6 32
JDK1.7 33
JDK8 34
因為Java是向後相容的,所以高版本的相容低版本的,所以有時候你遇到java報: unsupported major.minor version 51,那就是你用低版本的虛擬機器去執行高版本JDK編譯的class檔案了,所以低版本的虛擬機器就抱怨了。這裡的51是十進位制,也就是十六進位制的33,及對應JDK1.7,如果出現這種錯誤,你肯定是使用低於1.7版本的虛擬機器去執行這個了。
作者:hongchangfirst