【问题标题】:Library from jre\lib\ext not found on the classpath [duplicate]在类路径中找不到来自 jre\lib\ext 的库 [重复]
【发布时间】:2014-09-24 07:35:45
【问题描述】:

我在 JavaFX 中创建了与智能卡交互的应用程序(通过位于 jre/lib/ext/sunpkcs11.jar 的类 sun.security.pkcs11.SunPKCS11)。执行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。

【问题讨论】:

  • @AntJavaDev 感谢您的回答,我已阅读本段并使用jfx:jar 目标(由于项目结构复杂,没有clean)。我也在运行正确的 jar(来自target/jfx/app 目录)。
  • 是的,我的意思是你能看看在请求的 /lib 文件夹中是否存在你的 jar 吗?因为如果它不存在意味着 maven 没有导出它
  • 我可以看到lib/ 目录。它位于target/jfx/app 并包含所有项目自定义依赖项。但是,它不包含 sunpkcs11.jar(除非我使用有问题的解决方法),因为这是 JRE 库。
  • 好吧,我不明白为什么你把它作为依赖项放在 pom 中很难看(你没有所有其他外部项目依赖项???),因为如果你不这样做,它就不会被导出构建项目后,这就是为什么您在 /lib 文件夹中看不到它

标签: java maven javafx shared-libraries classpath


【解决方案1】:

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

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

【讨论】:

  • 我就是这么做的。我在问题中将其描述为一种解决方法:)
  • @MaciejDobrowolski 解决此问题的下一步 - 我已停止使用 javafx-maven-plugin 并配置标准 maven-jar-plugin 以创建具有依赖关系的可执行 jar。
  • 还是没有解决问题。此 JAR 是标准 JAR 之一。不用我把lib` directory JARs as jfxrt.jar, rt.jar. Why doesn't it fetch libs from JRE ext`目录放进去吧?这就是为什么我认为这是某种 JavaFX 类加载器问题。
猜你喜欢
  • 2010-10-31
  • 2015-12-24
  • 2018-05-04
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 2012-09-14
  • 2012-07-19
  • 2013-05-12
相关资源
最近更新 更多