Win a copy of Think Java: How to Think Like a Computer Scientist this week in the Java in General forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

How to find which version of java was used to compile particular java class.

 
Pras Tiwari
Ranch Hand
Posts: 186
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,
I have a compiled java class file say a.java, which i have taken from somewhere else. Now I would like to know with which java (JDK) version that class file was compiled.

Is there any way to find out above thing (JDK version used for compiling)?

Thanks in advance.
--Pras
 
Medha Jhunjhunwala
Greenhorn
Posts: 9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Not sure is this will help you. Every class file has a format. the first 4 bytes have the magic number and the next 4 represent the version. Please search for class file format for more details. Don't know of any utility that gives this info straightaway.

-Medha
 
Jesper de Jong
Java Cowboy
Saloon Keeper
Posts: 15272
37
Android IntelliJ IDE Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
No, that is not really possible.

See this thread for a discussion of the same question.
 
Pras Tiwari
Ranch Hand
Posts: 186
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Got one utility that reads bytes from .class file and interpret it:-

try {
String filename = "C:\\pal\\WTP_Workspace\\JavaSocketBridge\\src\\Test.class";
DataInputStream in = new DataInputStream(new FileInputStream(
filename));
int magic = in.readInt();
if (magic != 0xcafebabe) {
System.out.println(filename + " is not a valid class!");
}
int minor = in.readUnsignedShort();
int major = in.readUnsignedShort();
System.out.println(filename + ": " + major + " . " + minor);
in.close();
} catch (IOException e) {
System.out.println("Exception: " + e.getMessage());
}


Here the combination of major and minor version will reveal the java version against which class has been compiled.

Possible major/minor value are :
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

-----Pras----
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic