![]() |
1
138
使用
javap
JDK附带的工具。这个
仅显示版本:
|
![]() |
2
43
很容易读懂 class file signature 在没有第三方API的情况下获取这些值。您所需要做的就是读取前8个字节。
对于类文件版本51(Java 7),打开字节为:
…其中,0xcafebabe是魔力字节,0x0000是次要版本,0x0033是主要版本。
正在浏览目录( File )和档案( JarFile )查找类文件是很简单的。 甲骨文公司 Joe Darcy's blog 列出 class version to JDK version mappings 到Java 7:
|
![]() |
3
21
在类UNIX上 file /path/to/Thing.class 将提供文件类型和版本。输出如下:
|
![]() |
4
9
如果你在一个Unix系统上,你可以做一个
(我的版本的文件称为Java6类的“编译Java类数据,版本50”)。 |
![]() |
5
5
又一个Java版本检查
|
![]() |
6
4
|
![]() |
7
2
也许这对某些人也有帮助。看起来有更简单的方法让Java版本用于编译/构建.class。这种方式对Java版本的应用程序/类自检非常有用。 我浏览了JDK库,发现了这个有用的常量: com.sun.deploy.config.builtinproperties.current_版本 . 我不知道从什么时候起它就在JAVA JDK中。 尝试将这段代码用于多个版本常量,结果如下: SRC:
输出:
在类字节码中,确实存在存储常量-请参见main.call中红色标记的部分- constant stored in .class bytecode 常数在类中用于检查Java版本是否过期(参见 How Java checks that is out of date ) |