我已經在JavaFX中創建了與智能卡交互的應用程序(通過位於jre/lib/ext/sunpkcs11.jar
的類sun.security.pkcs11.SunPKCS11
)。當maven jfx:run
目標(的javafx-maven-plugin
插件)執行時,該程序運行並運行良好。從類路徑中找不到jre lib ext的庫
不幸的是創建jar文件(使用jfx:jar
目標)並運行結果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
到本地Maven和添加項目POM文件的依賴中發現的簡單的辦法解決這個問題。正如我所提到的那樣,解決方案是「解決方法」,看起來很醜。
爲什麼應用程序無法找到作爲「標準」之一的庫? JavaFX jar是否使用自定義類加載器,它看不到此庫?
即使當我用自己的JRE
創建本地捆綁包(在我的情況下是.exe)它不能看到該類。
更新
的不是評論鏈接的問題的重複,我有32位JDK和JRE。 JAVA_HOME
也指向32位JRE。
我排隊你已經閱讀第1段http://zenjava.com/javafx/maven/jar-bundle.html – AntJavaDev 2014-09-24 07:47:53
@AntJavaDev感謝您的回答,我已閱讀本段,我使用'jfx:jar'目標(由於項目結構複雜,沒有「清潔」)。我也運行正確的jar(來自'target/jfx/app'目錄)。 – 2014-09-24 07:55:03
是的,我的意思是你可以看到,如果在請求的/ lib文件夾存在你的jar?因爲如果它不存在意味着maven不會導出它 – AntJavaDev 2014-09-24 07:56:28