在类路径中找不到来自jre \ lib \ ext的库

时间:2014-09-24 07:35:45

标签: java maven javafx shared-libraries classpath

我在JavaFX中创建了与智能卡交互的应用程序(通过位于sun.security.pkcs11.SunPKCS11的类jre/lib/ext/sunpkcs11.jar)。当maven jfx:run目标(javafx-maven-plugin插件)被执行时,该程序运行良好。

不幸的是在创建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 个答案:

答案 0 :(得分:0)

我也有同样的问题。我已经通过将安全库复制到lib目录(使用maven-antrun-plugin来解决这个问题来解决它,但你可以找到自己的方法来实现这一目标。)

您可能需要从jre安装中复制sunpkcs11.jar文件。