У нас есть приложение Java, разработанное в Eclipse.Мы используем одобренную папку, которая содержит зависимость jaxb ниже jars
jaxb-api-2.2.11.jar
jaxb-core-2.2.11.jar
jaxb-impl-2.2.11.jar
jaxb-jxc-2.2.11.jar
jaxb-xjc-2.2.11.jar
Чтобы указывать на эти jar-файлы во время выполнения, мы обновили путь к утвержденной папке в INI-файле приложения, например -Djava.endorsed.dirs=./endorsed
.Наше приложение будет установлено в C:\Program Files
, и мы поместили одобренную папку в папку приложения.
Это работает нормально на некоторых виртуальных машинах, но видит java.lang.NoClassDefFoundError на нескольких виртуальных машинах.
Я попробовал несколько ниже упомянутых вещей:
Создана переменная среды _JAVA_OPTIONS и указанная подтвержденная папка: То же самое java.lang.NoClassDefFoundError замечено.
Создана переменная среды _JAVA_OPTIONS и указанная подтвержденная папка после перемещения утвержденной папки за пределы C:\Program Files
что-то вроде C:\temp\endorsed
: . Эта проблема решена.
В чем может быть причина этого? В некоторых виртуальных машинах JVM может выбрать jar из одобренной папки, даже если она находится в C: \ Program Files, тогда как вна некоторых устройствах JVM не может выбрать файлы из одобренной папки.