Библиотека из jre \ lib \ ext не найдена в пути к классам [дубликаты]

1

Я создал приложение в JavaFX, которое взаимодействует с smartcards (через класс sun.security.pkcs11.SunPKCS11 расположенный в jre/lib/ext/sunpkcs11.jar). Программа работает и работает хорошо, когда jfx:run maven jfx:run goal (javafx-maven-plugin plugin).

К сожалению, после создания архива jar (с использованием jfx:jar goal) и запуска jfx:jar результата. Приложение запускает исключение при запуске:

Caused by: java.lang.ClassNotFoundException: sun.security.pkcs11.SunPKCS11
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 12 more

Я нашел простую sunpkcs11.jar проблему для этой проблемы, установив sunpkcs11.jar локально на maven и добавив зависимость в файл проекта pom. Такое решение, как я уже упоминал, "обходное решение" и выглядит уродливым.

Почему приложение не может найти библиотеку, которая является одной из "стандартных"? Является ли JavaFX jar использующим пользовательский загрузчик классов, который не видит эту библиотеку?

Даже когда я создаю собственный пакет (.exe в моем случае) со своей собственной JRE он не может видеть этот класс.

Обновить

Это не дубликат вопроса, связанный в комментарии, у меня есть 32-битный JDK и JRE. JAVA_HOME также указывает на 32-битную JRE.

  • 0
    я прошу вас прочитать первый абзац zenjava.com/javafx/maven/jar-bundle.html
  • 0
    @AntJavaDev Спасибо за ответ, я прочитал этот абзац и использую jfx:jar (без clean из-за сложной структуры проектов). Я также использую правильный jar (из target/jfx/app ).
Показать ещё 7 комментариев
Теги:
maven
javafx
shared-libraries
classpath

1 ответ

0

У меня была такая же проблема. Я решил это, maven-antrun-plugin библиотеки безопасности в каталог lib (используя для этого maven-antrun-plugin, но вы можете найти свой собственный способ сделать это).

Вероятно, вам придется скопировать файл sunpkcs11.jar с вашей установки jre.

  • 0
    Это то, что я сделал. Я описал это как обходной путь в вопросе :)
  • 0
    @MaciejDobrowolski Следующий шаг в решении этой проблемы - я перестал использовать javafx-maven-plugin и настроил стандартный maven-jar-plugin для создания исполняемого jar с зависимостями.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню