【问题标题】:Is there a way to tell if a class was compiled for java6?有没有办法判断一个类是否是为 java6 编译的?
【发布时间】:2010-06-01 16:30:55
【问题描述】:

如何判断 java 类是否已编译用于 java 6 vm?

有没有简单的方法?

【问题讨论】:

    标签: java class compatibility java-6


    【解决方案1】:

    它在class file format specification 中。 WP article on the subject 包括当前的版本号常量集。

    【讨论】:

    • 我更多的是寻找类似命令的东西,或者只是查看文件的标题或类似的东西。但您的答案与我目前所寻找的最接近。
    • javap -verbose -classpath ... com.company.YourClassName 会为你打印出版本号
    • 因为 matt b 没有给出实际答案,也没有人给出神奇的数字 (50),所以我添加了自己的答案,并且更容易获得“是” /没有回答。
    【解决方案2】:

    在 unix 中,

    $ javap -classpath <classpath> -verbose foo.Bar \
      | grep -q 'major version: 50' && echo yep || echo nope
    

    感谢@matt b。

    【讨论】:

      【解决方案3】:

      通过使用java decompiler

      【讨论】:

      • ......这并不顺利,至少不是 jd-gui。这个不提供类文件元数据的视图。 (用实际的 V0.3.2 快速测试)。因此,使用这种方法,您必须寻找直到 Java 1.6 才可用的类/方法的使用。
      • 不精确的Andreas_D,编译器的版本由JD-GUI显示:拖拽一个class文件,鼠标移到tab上。
      最近更新 更多