首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找出原始jdk版本

如何找出原始jdk版本
EN

Stack Overflow用户
提问于 2009-12-29 07:57:18
回答 5查看 238关注 0票数 0

我正在修改一个java程序,该程序是在2004年使用J2re1.4.2_03的javaw.exe编写的。

问题:有没有办法找出程序员使用哪个JDK编译器来编译java文件?

背景故事:我用jdk5的javac重新编译了java文件。我用j2re1.4.2_03中的javaw.exe运行它,它给我一个弹出错误:“找不到主类。程序将退出。”

从谷歌上看,错误消息意味着如果我用JDK5的javaw.exe运行,用更老的javac.exe编译的类,没有错误。

我希望避免重新编译所有的类文件,因为我没有所有的原始java文件来进行完全的重新编译。

有没有办法绕过这一点,或者找出最初的程序员使用哪个编译器来做这件事?或者使用更好的

提前感谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-29 08:01:43

我不太清楚你的确切问题是什么。

如果您想知道如何找出类文件来自哪个Java版本,那么可以读取类文件的头文件。你可以看到信息here,还有一些工具可以帮你检查这些文件。

通常应避免一起使用由不同编译器编译的类文件。有一些方法可以绕过它,但你会在类路径地狱中。新的Java文件是否与旧版本兼容(例如,没有泛型?)您始终可以从Sun获得较旧的编译器,并且只需使用此编译器编译较新的文件。

票数 1
EN

Stack Overflow用户

发布于 2009-12-29 08:10:16

从谷歌上搜索到的

,错误消息意味着使用更老的javac.exe编译的类

我很确定不是这样的。用旧版编译器编译的类文件在新的JVM上运行得很好,而且我也从未遇到过混合来自不同编译器的类文件的问题;类文件格式的规定非常严格。

我怀疑您唯一需要做的就是使用-target 1.4选项(或使用1.4编译器)编译新代码,这样您就可以生成1.4JVM能够理解的类文件。

或者,只需使用1.5版本的JVM运行该程序-很可能它将不会出现任何问题。

票数 1
EN

Stack Overflow用户

发布于 2009-12-29 08:12:34

关于元信息问题:有时,当您解压jar并查看/ meta -INF/MANIFEST.MF文件时,您会获得一些环境信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1972206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档