Find out what version a Java Class is compiled with
Writing by shivdev on Tuesday, 17 of February , 2009 at 6:12 pm
I got an UnsatisfiedLinkError and wanted to find out whether our JDK upgrade had caused it and did some searching and found that javap -verbose lets you find out the version of a compiled class. So get the class (could be in a JAR file) and then follow this example where I find the version of MyCallback.class
C:>c:\jdk1.6.0_07\bin\javap -verbose MyCallback
Compiled from “MyCallback.java”
public class com.shivdev.MyCallback extends java.lang.Object implements com.shivdev.IFilter
SourceFile: “MyCallback.java”
minor version: 0
major version: 49
Then compare with the following:
major minor JDK 45 3 1.0 45 3 1.1 46 0 1.2 47 0 1.3 48 0 1.4 49 0 1.5 50 0 1.6
Alternatively, you can use this java class to find out the version:
public class FindVersion { private static int convert(byte upper, byte lower) { int ret = upper << 8; ret |= lower; return ret; } public static void main(String[] args) throws Exception { final String CLASS = "MyCallback.class"; ClassLoader loader = FindVersion.class.getClassLoader(); java.io.InputStream in = loader.getResourceAsStream(CLASS); try { byte[] buffer = new byte[8]; in.read(buffer); int minor = convert(buffer[4], buffer[5]); int major = convert(buffer[6], buffer[7]); System.out.println(major + "." + minor); } finally { in.close(); } } }
Leave a comment
Category: Java
- Add this post to
- Del.icio.us -
- Digg -
- -
- Tweet -
-
-