有没有办法在Java5的运行环境中运行Java6的Hotspot?我有一些代码依赖于较旧的类实现的行为,但我希望使用较新的JVM。我确实计划将代码迁移到Java6(或者可能是7!),但是现在,我更关心的是我是否有JVM问题。
发布于 2012-03-01 14:01:45
我认为你最好选择以下其中一种:
H19尝试最新的Java7JRE以查看是否已修复该错误。<代码>H210<代码>F211
在Java6JVM上使用Java5JVM的问题在于,rt.jar中的核心类与rt.jar的本机代码实现之间存在隐藏的依赖关系;即java二进制文件和相关的本地库。这些都没有文档记录,并且(IMO)它们中的一些很可能在Java5和Java6之间发生了变化。
extdir如果两者之间存在本机不兼容,那么看起来我只能抓取我需要的特定类,或者在rt.jar中替换它们,或者用rt.jar覆盖它们。
像那样黑进Java不是一个好主意。至少,每次在应用程序的平台上下载和安装最新的Java 6 JRE时,都必须重复黑客攻击。(如果您将此应用程序提供给其他人,那么他们也会遇到问题。)
在我的原文中,还有两个替代方案可以替代:修复应用程序以解决问题,并继续使用Java5。
该错误存在于Java7的XSLT和最新的Xalan中
您是否考虑过这根本不是一个bug的可能性?也许它是对以前的bug的修复,或者在相关规范的范围内允许的行为,而你的代码是错误的,因为依赖于以前的(buggy?)行为。
Java / Xalan bug数据库中是否有针对此bug的bug报告?维护者是怎么说的?他们提供变通方法了吗?(这些问题需要问……)
发布于 2012-03-01 09:59:34
它大部分是向后兼容的,我们只是将一些1.4.x代码迁移到1.6 (有或没有重新编译,因此是二进制和源代码),并且起作用了。
我建议你看看每一个主要的java版本,因为它们总是有一些不兼容的地方。请查看Java 1.6 compatibility with 1.5,如果您正在迁移源代码/二进制文件的一些旧版本,请检查所有主要的java版本页面,看看是否存在不兼容问题。
编辑:在您的问题中,您写道您希望Hotspot 1.6 ( JVM)与JRE 1.5一起运行?你知道JRE包含JVM,你确定你刚才问的是什么吗?
发布于 2012-03-01 10:37:48
我不确定我是否正确理解了您的问题,但是如果您使用java5编译器编译代码,那么是的,您可以在java6vm上运行它而不会出现问题。
https://stackoverflow.com/questions/9509510
复制相似问题