Как получить чистую виртуальную машину Java на MacOS?

Asked
Viewd108

0

В MacOS (по крайней мере, в SnowLeopard) команда java безоговорочно добавляет дополнительную банку в путь к классам:

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

В этой банке содержится версия Apache Xerces + Xalan без переименования.Это может привести к хаотическим результатам для приложений, которые явно пытаются использовать некоторые другие версии этих библиотек, особенно в веб-приложениях в контейнерах сервлетов.

Я пытался избежать этого, используя OpenJDK из MacPorts, но сборка MacPorts не удалась.

Кто-нибудь придумал какой-нибудь другой рецепт, кроме очевидного насилия при удалении этого файла JAR?Это рекомендуется в одном блоге, но я опасаюсь, что какой-то компонент Apple или другой выйдет из строя без этого.

2 ответов

1

После переименования 14compatibility.jar проблем не возникло.Возможно, тебе стоит попробовать это сделать.Если что-то ужасно сломается, вы можете вернуть его на исходное место.

1

Я считаю, что главный козырь здесь - -Xbootclasspath / p: foo.jar.Это позволяет вам добавить .jar к загрузчику классов начальной загрузки.Это должно иметь приоритет над всем, что я могу себе представить.Например, таким способом можно заменить java.lang.String.

  • Достаточно честно, но здесь нет фляги.Я хочу избавиться от этого материала, а не просто заменить его какой-нибудь другой версией.

    bmargulies13 ноября 2009, 20:40