0

有没有办法在 Java 5 的运行时环境中运行 Java 6 的热点?我有一些代码依赖于旧的类实现的行为,但我想使用更新的 JVM。我确实有计划将代码迁移到 Java 6(或者可能是 7!),但现在,我更关心是否有 JVM 问题。

4

3 回答 3

1

主要是向后兼容的,我们只是将一些 1.4.x 代码迁移到 1.6(有和没有重新编译,因此是二进制和源代码)并且工作正常。

我建议您查看每个主要的 java 版本发布,因为总会有一些不兼容的地方。查看Java 1.6 与 1.5 的兼容性,如果您正在迁移一些旧版本的源代码/二进制文件,请查看所有主要的 Java 版本页面,看看您是否陷入了不兼容性。

编辑:在您的问题中,您写道您希望 Hotspot 1.6 (JVM) 与 JRE 1.5 一起运行?你知道 JRE 包括 JVM,你确定你刚才问的是什么吗?

于 2012-03-01T01:59:34.297 回答
1

我认为您最好使用以下方法之一:

  • 确定是否可以修改应用程序代码以解决 Java 6 中的 XSLT 错误。

  • 查明是否有针对 Java 6 上的 XSLT 错误的 Sun/Oracle 支持补丁。

  • 使用 Java 5 JRE。

  • 尝试最新的 Java 6 JRE 看看 XSLT 错误是否已修复。

  • 尝试最新的 Java 7 JRE 看看 XSLT 错误是否已修复。

在 Java 6 JVM 上使用 Java 5 的问题在于 JVM 中的核心类和本机代码实现rt.jar之间存在隐藏的依赖关系;rt.jarjava二进制和相关的本地库。这些没有记录,并且(IMO)很可能其中一些在 Java 5 和 Java 6 之间发生了变化。


如果两者之间存在本机不兼容性,看起来我只能抓住我需要的特定类,要么在 rt.jar 中替换它们,要么用 extdir 覆盖它们。

像这样破解 Java 并不是一个好主意。至少,每次在应用程序平台上下载和安装最新的 Java 6 JRE 时,您都必须重复这些技巧。(如果您将此应用程序提供给其他人,那么他们也有问题。)

在我的原始版本中仍有 2 个替代方案可供您使用:修复应用程序以解决问题,并继续使用 Java 5。


该错误存在于 Java 7 的 XSLT 和最新的 Xalan 中

您是否考虑过这根本不是错误的可能性?也许它是对相关规范范围内的先前错误或允许行为的修复,并且您的代码因先前(错误?)行为而出错。

Java / Xalan 错误数据库中是否有此错误的错误报告?维护者怎么说?他们提供解决方法吗?(这些问题需要问...)

于 2012-03-01T06:01:45.337 回答
0

我不确定我是否正确理解了您的问题,但是如果您使用 java 5 编译器编译代码,那么是的,您可以在 java 6 vm 上运行它而不会出现问题。

于 2012-03-01T02:37:48.430 回答