如果我有一个已编译的Java类,是否可以仅从类文件中知道其目标版本兼容性是什么?具体来说,我有许多编译成Java 6的类文件,它们在Java
5下运行,并显示“无法识别的版本”错误。我希望能够在不运行JVM的情况下查看类文件并查找其目标版本兼容性。有任何想法吗?
我已经在网上找到了它并且可以使用。
每个“ .class”文件都以以下内容开头:
- 幻数[4字节]
- 版本信息[4字节]
使用以下每个选项编译的“ .class”文件的十六进制转储显示:
javac -target 1.1
==>CA FE BA BE 00 03 00 2D
javac -target 1.2
==>CA FE BA BE 00 00 00 2E
javac -target 1.3
==>CA FE BA BE 00 00 00 2F
javac -target 1.4
==>CA FE BA BE 00 00 00 30
也许您可以使用此信息来编写自己的’.class’文件版本检查实用程序,使用Java或脚本或Shell语言;)!
我希望这有帮助。
安东尼·波拉(Anthony Borla)
来自:http : //bytes.com/groups/java/16603-how-determine-java-bytecode-
version
问题内容: 我知道,这里已经问过许多类似的问题。我不是在问我是否可以保护编译的Java类- 因为显然您会说“不,您不能”。我问的是最著名的保护Java类免于反编译的方法是什么?如果您知道该领域的任何研究或学术论文,请告诉我。另外,如果您使用过某些方法或软件,请分享您的经验吗?任何种类的信息都将非常有用。谢谢。 问题答案: 首先,如果你的目标“只” Windows的市场有一个非常简单的防止“的.cl
Java版本: IDE: 火狐版本:
我可能会对遗留项目进行一些交叉编译,并且在最近的JDK中我注意到,对于、和JVM参数,我们仅限于一些特定的版本。 如何获得这些参数的支持版本?
问题内容: 运行Selenium脚本时,我在Eclipse控制台中收到以下错误消息: 类是由Java环境的最新版本(类文件版本53.0)编译的,此版本的Java运行时仅可识别52.0以下的类文件版本。 Java版本: IDE: Firefox版本: 问题答案: 这只是版本不匹配。您已经使用Java版本9编译了代码,而当前的JRE是版本8。请尝试将JRE升级到9。
我用的是Spring靴2。在多java项目中。 我尝试构建我的主库(还没有java文件) 在我的gradle/wrapper中,我有 我得到的错误 原因:org.gradle.api.internal.plugins.PluginApplicationException:无法应用插件[id'org.springframework.boot'] 原因:org.gradle.api。GradleExc
问题内容: 我想将我的.java(几个)编译成至少与Java 兼容的,较新的(最好是较新的)版本。(我有) 问题答案: 是的,您可以在编译时设置编译器的版本。并将您的Java代码编译为Java的旧版本。 从Oracle文章:http : //docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html 交叉编译示例 在这里,我们使用ja