[英]How to know a java class is compiled by jdk 64bit or 32bit version?
給定一個Java類文件,我們可以使用hexdump或od來了解其jdk版本,但是我們可以知道給定Java類文件的64位或32位信息嗎?
我想知道java類文件是否具有該字段,例如version字段?
如果字節碼與字長無關,那么當您對類文件進行od時,它就像:
0000000 feca beba 0000 3100 6300 0009 0019 0946 0000020 1900 4700 0009 0019 0948 1900 4900 0009 0000040 0019 094a 1900 4b00 000a 001a 074c 4d00
第一行約為2 * 8字節,為什么第二行地址為0000020?
但是我們能知道給定Java類文件的64位或32位信息嗎?
不,你不能說。
.class
文件並在32位或64位JVM上運行。 在1上編譯它們的平台都沒有關系。 javap
輸出中沒有任何內容可以告訴您使用了什么Java編譯器。 (您可以從類文件版本中了解Java主版本,但這不是確定的,這不是我們在說的...) strings
或od
的.class
文件中找不到編譯器版本字符串的任何痕跡。 跟進:
為什么第二行地址是0000020?
以八進制表示。 有關詳細信息,請參閱man 1 od
。 (從歷史上看, od
是“八進制轉儲”的收縮。)
1-忽略類文件版本問題...
Java .class文件與平台無關。 特別是,同一類文件可以在32位和64位體系結構上執行。 因此,在類文件中沒有不必要的字段。
類文件的字節代碼是特殊的VM字節代碼,與基礎體系結構無關。 因此,您無需確定此信息。 您可以使用64位JDK編譯Java程序,然后在JRE_32位上運行它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.