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

可能重复:
阅读和显示Java .class版本的工具

我正在尝试debugging一个

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

错误在Java中,有没有办法让我来检查.class文件是哪个版本?

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

我正在编译兼容模式设置为1.5在日食,我认为会工作…

您正在命令行上查找(对于名为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编译器识别两个版本标志。 有1.5源代码,它假定Java 1.5级别的源代码和-target 1.5,它将发出java 1.5兼容的类文件。 你可能会想要使用这两个开关,但你一定需要-target 1.5; 尝试双重检查,日食是做正确的事情。

免费的JarCheck工具在这里

你可以试试jclasslib:

https://github.com/ingokegel/jclasslib

它可以将自己与* .class扩展关联在一起。

你的java命令的-verbose标志是否会产生任何有用的信息? 如果没有,也许java -X揭示了特定于您的版本的东西,可能有帮助?