给定一个java class文件,我们可以使用hexdump或od来知道它的jdk版本,但是我们可以知道给定的java class文件是64位还是32位信息吗?
我想知道java类文件是否有像版本字段这样的字段?
如果字节码与字大小无关,那么当您读取类文件时,它就像:
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主要版本,但这不是确定的,而且这不是我们正在讨论的......).class使用 UNIX/Linux 实用程序(例如strings或 )在文件中找到编译器版本字符串的任何痕迹od。跟进:
为什么第二行地址是0000020?
它是八进制的。man 1 od详情请参阅。(从历史上看,od是“八进制转储”的缩写。)
1 - 忽略类文件版本问题...
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |