版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BlogRecord/article/details/50782138
(以 qiniu-android-sdk-7.1.2.jar 为例子)
第一种方式:
直接解压jar,随便找到其中一个类,通过以下代码进行查询
public class VersionMain {
private static final int JAVA_CLASS_MAGIC = 0xCAFEBABE;
public static void main(String[] args) {
try {
// 随便一个class路径
String path = "H:\\异常\\qiniu-android-sdk-7.1.2\\com\\qiniu\\android\\common\\Constants.class";
DataInputStream dis = new DataInputStream(new FileInputStream(path));
int magic = dis.readInt();
if (magic == JAVA_CLASS_MAGIC) {
int minorVersion = dis.readUnsignedShort();
int majorVersion = dis.readUnsignedShort();
// 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
System.out.println("ClassVersionTest.main() " + majorVersion + "." + minorVersion);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 最后打印的结果是:
// ClassVersionTest.main() 51.0
// 表明这个jar,是以jdk 1.7的版本打包的
第二种方式:
直接用二进制编辑工具(例如Uedit32),打开class
会有以下的显示: CA FE BA BE 00 00 00 33
33是编译这个类的JDK版本。
33表示51,是JDK1.7;32表示50,是JDK1.6 依次类推。