스마트 카드와 상호 작용하는 JavaFX의 응용 프로그램을 작성했습니다 (sun.security.pkcs11.SunPKCS11
jre/lib/ext/sunpkcs11.jar
에 위치). 프로그램이 실행되고, 플러그인의 목표 jfx:run
이 실행되면 잘 작동합니다.jre lib ext의 라이브러리가 클래스 경로에 없습니다.
불행하게도 jar 아카이브 (목표 jfx:jar
사용)를 만들고 결과 jar을 실행 한 후. 응용 프로그램 시작시 예외가 발생합니다 : 나는 sunpkcs11.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
. 그런 해결책은 내가 언급했듯이 "workaround"이며보기 흉한 것처럼 보입니다.
왜 응용 프로그램은 "표준"라이브러리 중 하나 인 라이브러리를 찾을 수 없습니까? 이 라이브러리를 볼 수없는 사용자 정의 클래스 로더를 사용하는 JavaFX jar 파일입니까?
고유 번들 (내 경우에는 .exe)을 자체 JRE
과 함께 만들었더라도 해당 클래스를 볼 수 없습니다. (가) 코멘트에 링크 된 질문의 중복되지
갱신
, 나는 32 비트 JDK와 JRE 있습니다. JAVA_HOME
도 32 비트 JRE를 가리 킵니다.
i 첫 번째 단락을 읽었을까요? http://zenjava.com/javafx/maven/jar-bundle.html – AntJavaDev
@AntJavaDev 답변을 주셔서 감사합니다.이 단락을 읽었으며'jfx : jar' 목표를 사용합니다 프로젝트의 복잡한 구조로 인해 '깨끗한'상태가 아님). 올바른 jar ('target/jfx/app' 디렉토리에서)도 실행 중입니다. –
예 요청한/lib 폴더에 항아리가 있는지 확인할 수 있습니까? 만약 그것이 존재하지 않는다면 maven이 그것을 export하지 않는다는 것을 의미한다. – AntJavaDev