有没有办法在Java 5的运行时环境下运行Java 6的Hotspot?我有一些代码依赖于较旧的类实现的行为,但我想使用更新的JVM。我确实计划将代码迁移到Java 6(或者可能是7!),但是现在,我更关心的是看看我是否有JVM问题。
答案 0 :(得分:1)
主要向后兼容,我们只是将一些1.4.x代码迁移到1.6(有和没有重新编译,因此二进制和源代码),并且有效。
我建议您查看每个主要的Java版本,因为总有一些不兼容性。查看Java 1.6 compatibility with 1.5,如果要迁移某些旧版本的源/二进制文件,请检查所有主要的Java版本页面,看看是否存在不兼容性。
编辑:在您的问题中,您写道您希望Hotspot 1.6(JVM)与JRE 1.5一起运行?你知道JRE包含了JVM,你确定你刚才问的是什么吗?
答案 1 :(得分: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 rt.jar
的问题是rt.jar
中的核心类与JVM的本机代码实现之间存在隐藏的依赖关系;即java
二进制和相关的本机库。这些没有记录,并且(IMO)极有可能在Java 5和Java 6之间发生了一些变化。
如果两者之间存在本机不兼容,看起来我只是抓住了我需要的特定类,并在rt.jar中替换它们或用extdir覆盖它们。
像这样黑客攻击Java并不是一个好主意。每次在应用程序平台上下载并安装最新的Java 6 JRE时,至少需要重复hackery。 (如果您向其他人提供此应用程序,那么他们也有问题。)
我的原始版本中仍有两种替代方法可供您使用:修复应用程序以解决问题,并使用Java 5。
Java 7的XSLT和最新的Xalan中存在错误
您是否考虑过这可能不是一个错误?也许这是对相关规范范围内的先前错误或允许行为的修复,并且您的代码因上一个(错误?)行为而出错。
Java / Xalan错误数据库中是否存在针对此错误的错误报告?维护者说什么?他们提供变通方法吗? (这些问题需要被问到......)
答案 2 :(得分:0)
我不确定我是否正确理解了您的问题,但如果您使用java 5编译器编译代码,那么是的,您可以在java 6 vm上运行它而不会出现问题。