gpt4 book ai didi

java - rt.jar 的内容是否会在不同的 JVM 供应商之间发生变化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:33 24 4
gpt4 key购买 nike

我继承了对直接使用 rt.jar 中的 **.internal.** apache xerces 类的遗留 Web 应用程序的支持。我认为历史是这段代码(回到 java1.4)曾经明确地使用 xerces 并且在移动到 java5 时的某个时刻放弃了 xerces jar 的使用并且这些类从 rt.jar 中引用为 内部等价物。

我正在尝试了解在各种 Web 容器(例如 Websphere 与 Tomcat 等)上运行该项目的影响。

  • rt.jar 是由 SUN 还是 JVM/JRE 供应商提供的?
  • 其他供应商是否继续在内部使用 xerces 还是有其他 XML 实现?

在某些时候(资源允许)需要更改此代码以使用标准的 Java API,我想了解这可能是一个多大的问题。

谢谢罗布

最佳答案

JVM 规范或 Java 语言规范中没有任何地方提到 rt.jar 并且所有 *.internal.* 包都被明确标记为不属于的 API。

因此可以安全地假设,使用其中任何一个都会将您直接绑定(bind)到 JVM 供应商和实现版本。不仅不同的供应商可以使用不同的 XML 解析器,而且即使在一个供应商内,当他们更改 XML 解析器、XML 解析器的版本或 XML 解析器的包装时,您也很容易遇到问题。

所有这些都是完全合法的更改,因为这些包不是 API。

因此,除非您愿意绑定(bind)到一小部分已知良好的 JVM,否则您绝对应该切换到使用标准 API,或者至少使用 Xerces 作为外部依赖项,从而从普通的 org.apache .xerces.* 包。

关于java - rt.jar 的内容是否会在不同的 JVM 供应商之间发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1187666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com