首先用一些二進制查看器打開class文件,比如od或者hexmp工具。
od -x hello.class
或者
hexmp 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版本的虛擬機去運行這個了。
Ⅱ 如何查看Class文件編譯的JDK版本
准備好要查看的class文件,本例使用Tools.class文件。
如何查看class文件的jdk版本
使用Ultra Edit打開class文件
如何查看class文件的jdk版本
如果顯示效果如下圖一樣,則表示默認使用的是16進制方式顯示。
如何查看class文件的jdk版本
如果不是16進制方式,則顯示為下圖的亂碼樣式。此時需要點擊菜單上的【切換為十六進制編輯模式】
如何查看class文件的jdk版本
只看第一行的數據:
(1)前面8個位元組CA FE BA BE是固定的。
(2)隨後4個位元組00 00是次版本號
(3)再後面的4個位元組00 34是JDK的版本號(JDK1.8)。
JDK版本號對應關系如下:
34(對應十進制的50):JDK1.8
33(對應十進制的50):JDK1.7
32(對應十進制的50):JDK1.6
詳細見第5步.......
如何查看class文件的jdk版本
詳細的JDK版本對應關系:
34(對應十進制的50):JDK1.8
33(對應十進制的50):JDK1.7
32(對應十進制的50):JDK1.6
31(對應十進制的49):JDK1.5
30(對應十進制的48):JDK1.4
2F(對應十進制的47):JDK1.3
2E(對應十進制的46):JDK1.2
Ⅲ 如何查看class文件的jdk版本
查看class文件編譯的jdk版本步驟如下:
首先打開cmd命令行窗口,輸入如下指令:
Ⅳ 如何查看Class文件編譯的JDK版本
查看class文件編譯的jdk版本步驟如下:
首先打開cmd命令行窗口,輸入如下指令:
Ⅳ 如何修改java文件的中class版本號
您好,提問者:
這個唯一的辦法就是你安裝好幾個JDK版本,然後進行編譯成class文件。
Ⅵ java不同小版本編譯的class文件相同嗎
樓主,你好!
jdk小版本之間的區別主要是修補JRE的BUG和漏洞,也可能是修補java編譯器的小BUG。它們編譯的class文件幾乎完全相同。當然,如果jdk小版本的一次升級只是修補了JRE而沒有修補Java編譯器,那麼這兩個版本的java編譯器自然編譯生成的位元組碼文件完全相同。
java編譯器支持編譯特定版本的java源文件,也支持將某版本的java源文件編譯為某版本的位元組碼文件,同時java編譯器也支持以指定的字元集解析Java源文件。例如,可以將java6版本的java源文件編譯為java5的位元組碼文件(也就是說,可以在jre5上運行),也可以將java6版本的java源文件編譯為java7版本的位元組碼文件,而這都是由javac的編譯選項-source和-target決定的,再例如,可以將使用UTF-8編寫java源文件,您也可以使用UTF-16編寫Java源文件,這是您需要指定-encoding 編譯選項。
Ⅶ 如何查看class java版本
你是說的java版本吧 直接去你的安裝目錄找啊 最直接
或者你在DOS裡面打java -version
java後面有空格的 你直接復制
Ⅷ 如何查看Class文件編譯的JDK版本
由於JDK一般是向下兼容的,所以有時候本地的JDK版本比類庫的版本低,往往會拋出java.lang.UnsupportedClassVersionError: Bad version number in .class file。
有時候需要確認到底是哪個類的版本低。所以需要確認類的編譯JDK的版本。
可用二進制編輯工具(例如EmEditor)打開類文件,會有以下的顯示:
CA FE BA BE 00 00 00 32.....
而上面的32是編譯這個類的JDK版本,32表示是50,是JDK1.6;31表示49,是JDK1.5;30表示48,是JDK1.4......依次類推。
如編譯上面的類的JDK為JDK1.6。所以你在環境是JDK1.6以下的引用這個類,就會拋出版本不對的異常。
Ⅸ 如何查看class文件的jdk版本
查看class文件編譯的jdk版本步驟如下:
首先打開cmd命令行窗口,輸入如下指令:
會輸出一些信息,大致如下:
Compiled from "HtmlCrawer.java"
public class org.eagleeye.html.HtmlCrawer extends java.lang.Object
SourceFile: "HtmlCrawer.java"
minor version: 0
major version: 50//這個便是jdk的版本信息。
jdk的版本可以參考如下對照表:
Ⅹ java如何降低class版本
使用低版本的jdk編譯,然後再運行,就相當於降低class版本