在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文件的暴力之外,是否有人制定了其他一些食谱?它建议在一个博客上,但我担心一些苹果组件或其他组件会在没有它的情况下失败。
答案 0 :(得分:1)
我相信这里的终极王牌是-Xbootclasspath / p:foo.jar。这使您可以将.jar添加到引导类加载器中。这应该使它优先于我能想象的任何东西。例如,你可以用这种方式替换java.lang.String。
答案 1 :(得分:1)
重命名14compatibility.jar后我没有遇到任何问题。也许你可以尝试这样做。如果有任何可怕的破坏,你可以将它移回原来的位置。