如何检查用于编译.class文件的jdk版本

时间:2009-07-08 04:46:31

标签: java

  

可能重复:
  Tool to read and display Java .class versions

我正在尝试调试

  

“.class文件中的版本号错误”

java中的

错误,有没有办法检查.class文件的版本是什么?

我正在使用JRE1.5.0_6,但我的JDK是版本1.6.0_13。

我正在使用兼容模式编译,在eclipse中设置为1.5,我认为它可以工作......

5 个答案:

答案 0 :(得分:586)

您正在命令行上查找(对于名为MyClass的类):

在Unix / Linux上:

javap -verbose MyClass | grep "major"

在Windows上:

javap -verbose MyClass | findstr "major"

您希望结果中包含主要版本。以下是一些示例值:

  • Java 1.2使用主要版本46
  • Java 1.3使用主要版本47
  • Java 1.4使用主要版本48
  • Java 5使用主要版本49
  • Java 6使用主要版本50
  • Java 7使用主要版本51
  • Java 8使用主要版本52
  • Java 9使用主要版本53
  • Java 10使用主要版本54
  • Java 11使用主要版本55

答案 1 :(得分:15)

顺便说一句,你遇到麻烦的原因是java编译器识别出两个版本标志。有-source 1.5,它假设java 1.5级源代码,-target 1.5,它将发出java 1.5兼容的类文件。你可能想要使用这两种开关,但你肯定需要-target 1.5;尝试仔细检查eclipse正在做正确的事情。

答案 2 :(得分:7)

免费JarCheck工具here

答案 3 :(得分:5)

您可以尝试jclasslib:

https://github.com/ingokegel/jclasslib

很高兴它可以将自己与* .class扩展名相关联。

答案 4 :(得分:3)

-verbose命令的java标志是否会产生任何有用的信息?如果没有,也许java -X会显示您的版本特有的内容可能会有所帮助吗?