解惑

解己之惑,解人之惑

查看Class文件的版本

呵呵,同事的类编译出来以后在Tomcat里面运行一直报错,说类版本不对,他已经把JDK1.6卸载了,上网查了下,一个简单的类就可以读出class文件的版本:

import java.io.*;

public class ClassVersionChecker {
    public static void main(String[] args) throws IOException {
        for (int i = 0; i < args.length; i++)
            checkClassVersion(args[i]);
    }

    private static void checkClassVersion(String filename)
        throws IOException
    {
        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();
    }
}

major  minor Java platform version
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

原文在这里

(Visited 208 times, 1 visits today)

2 Comments

  1. 推荐一个Eclipse插件,可以查看版本号的:
    http://andrei.gmxhome.de/bytecode/index.html

    查看bytecode的功能蛮方便的

  2. 呵呵,我们现在是用Intellij了,其实反编译工具DJ的类信息中也会显示版本号信息

发表评论

电子邮件地址不会被公开。 必填项已用*标注

© 2020 解惑

本主题由Anders Noren提供向上 ↑