Наш продукт представляет собой автономное настольное приложение OS X, написанное на Java. Мы включили встроенную JRE для запуска нашего программного обеспечения.Как отключить механизм расширения Java
Правила для запуска JRE, кажется, положить все JAR-файлы в /usr/lib/java
, /Library/Java/Extensions
и ~/Library/Java/Extensions
на пути к классам перед библиотеками, мы явно включать в пути к классам.
Если у пользователя есть JAR-файлы в любой из папок механизма расширения Java, то эти файлы JAR добавляются в наш путь к классам. Недавний инцидент с поддержкой возник в связи с тем, что у клиента была старая версия критической сторонней библиотеки в /usr/lib/java
- это приводило к неожиданному сбою нашего программного обеспечения при запуске.
Мне не удалось определить, как я могу отключить этот механизм расширения при вызове JRE, встроенного в наше приложение. Как я могу это сделать?
─────────
Примечание: кажется, что этот механизм расширения является устаревшим и в конечном итоге будет удалена: https://blogs.oracle.com/java-platform-group/entry/planning_safe_removal_of_under)
Я думаю, вы можете указать -Djava.ext.dir указывать на безопасное место. Не уверен, что это работает с Mac-пусковой установкой, он работал на Windows. – eckes
Вы имеете в виду, что вы упаковали встроенную JRE в ** ваш собственный файл jar? Как вы упаковываете/включаете встроенную JRE? –
У меня нет полного ответа. Первое, что приходит мне на ум, - это изменение правил безопасности JRE. Классы будут загружены несколькими вызовами метода loadClass, поведение загрузки зависит от политик безопасности. –