how to check the jdk version used to compile a .class file
Tool to read and display Java .class versions
I'm trying to debug a
"Bad version number in .class file'
error in java, is there a way for me to check which version the
.class files are?
JRE1.5.0_6, but my
JDK is version 1.6.0_13.
I'm compiling with compatibility mode set to 1.5 in eclipse which I thought would work...
You're looking for this on the command line (for a class called MyClass):
javap -verbose MyClass | grep "major"
javap -verbose MyClass | findstr "major"
You want the major version from the results. Here are some example values:
- Java 1.2 uses major version 46
- Java 1.3 uses major version 47
- Java 1.4 uses major version 48
- Java 5 uses major version 49
- Java 6 uses major version 50
- Java 7 uses major version 51
- Java 8 uses major version 52
- Java 9 uses major version 53
- Java 10 uses major version 54
- Java 11 uses major version 55
Read more... Read less...
Btw, the reason that you're having trouble is that the java compiler recognizes two version flags. There is -source 1.5, which assumes java 1.5 level source code, and -target 1.5, which will emit java 1.5 compatible class files. You'll probably want to use both of these switches, but you definitely need -target 1.5; try double checking that eclipse is doing the right thing.
-verbose flag to your
java command yield any useful info? If not, maybe
java -X reveals something specific to your version that might help?