查看Jar打包的jdk版本

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 依次类推。

猜你喜欢

转载自blog.csdn.net/BlogRecord/article/details/50782138