0

在 MacOS 上(至少在 SnowLeopard 上),java 命令无条件地向类路径添加一个额外的 jar:

/System/Library/Frameworks/JavaVM.framework/Versions/A/Resources/.compatibility/14compatibility.jar。

此 jar 包含未重命名的 Apache Xerces+Xalan 版本。对于那些试图显式使用这些库的其他版本的应用程序,尤其是在 servlet 容器中的 webapps 中,这可能会导致混乱的结果。

我试图通过使用 MacPorts 中的 OpenJDK 来避免这种情况,但 MacPorts 构建失败了。

除了删除那个 JAR 文件的明显暴力之外,有没有人想出其他方法?在一个博客上推荐它,但我担心如果没有它,某些 Apple 组件或其他组件会失败。

4

2 回答 2

1

我相信这里的终极王牌是 -Xbootclasspath/p:foo.jar 。这使您可以在引导类加载器之前添加一个 .jar。这应该使它优先于我能想象的任何事情。例如,您可以用这种方式替换 java.lang.String。

于 2009-11-13T20:37:08.077 回答
1

重命名 14compatibility.jar 后我没有遇到任何问题。也许你可以尝试这样做。如果有任何东西严重损坏,您可以将其移回原来的位置。

于 2009-11-13T20:39:49.377 回答