You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需已编译类,如何从javac或JRE获取Java类版本?

如何提前获知JDK将生成的类文件版本?

查看已编译类文件的版本

可以用javap命令从已编译的类二进制文件中获取类版本信息,命令如下:

javap -verbose Test | grep 'minor\|major'

执行后会得到类似输出:

minor version: 0
  major version: 55

其中major version对应着特定的JDK版本(比如55对应JDK 11)。

提前获知JDK编译生成的类版本

正如你所说,java -version只能看到JDK的版本信息,无法直接得知它会生成的类文件版本,不过有几种简单方法可以提前获取这个信息:

  • 利用JDK版本与类版本的对应关系:JDK主版本和类文件的major version有固定对应规则(比如JDK 8对应52、JDK 11对应55、JDK 17对应61),知道当前JDK的主版本就能直接对应到类版本。
  • 查看javac的默认target版本:执行javac -target(不带参数),命令会报错并显示默认的target版本,这个版本就是编译生成的类文件对应的JDK版本,进而可以对应到major version。示例:
javac -target

输出(JDK 11环境下):

javac: invalid target release: 
Usage: javac <options> <source files>
...
-target <release>        Generate class files for specific VM version. Supported targets: 1.6, 1.7, 1.8, 9, 10, 11
Default target: 11

这里默认target为11,对应类版本的major值55。

  • 查看系统属性java.class.version:通过以下命令直接获取当前JDK默认生成的类文件版本:
java -XshowSettings:properties -version | grep java.class.version

输出(JDK 11环境下):

java.class.version = 55.0

这个值就是类文件的major.minor版本(55.0对应minor版本0,major版本55)。

相关错误说明

这类问题通常和java.lang.UnsupportedClassVersionError有关——当用高版本JDK编译的类文件在低版本JVM上运行时,就会触发这个错误,提前掌握编译生成的类版本可以有效避免这类问题。

内容的提问来源于stack exchange,提问作者LMC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:25:30