My project consists of some third party jar files, which was compiled in different version of java.
My project is using older version of java so i am getting UnsupportedClassVersionError
while executing the application.
Is there any other way to get the version of java/jre number[45..51]
in which the class files are compiled so that i can check the jar files before using it.
Advertisement
Answer
You can use javap
(with -v
for verbose mode), and specify any class from the jar file. For example, looking at a Joda Time jar file:
javap -cp joda-time-2.7.jar -v org.joda.time.LocalDate
Here the -cp
argument specifies the jar file to be in the classpath, the -v
specifies that we want more verbose information, and then there’s the name of one class in the jar file.
The output starts with:
Classfile jar:file:/c:/Users/Jon/Test/joda-time-2.7.jar!/org/joda/time/LocalDate.class Last modified 12-Jan-2015; size 16535 bytes MD5 checksum d19ebb51bc5eabecbf225945eccd23ef Compiled from "LocalDate.java" public final class org.joda.time.LocalDate extends org.joda.time.base.BaseLocal implements org.joda.time.ReadablePartial,java.io.Serializable minor version: 0 major version: 49
The “minor version” and “major version” bits are the ones you’re interested in.
It’s possible that a single jar file contains classes compiled with different versions, of course.