我的项目使用 javafx jar 并将其包含在 Maven 的系统范围内。在我本地效果很好。现在,由于该 jar 包含在系统范围内,因此它不包含在 fat jar 中,当我部署该 fat jar 时,它会为 javafx 类提供 ClassNotFound 异常。为什么它无法访问我部署项目的计算机上的 javafx jar,因为 javafx 也位于该计算机的同一 lib 文件夹中?
PS:我手动将 javafx jar 复制到该机器的 JAVA_HOME/lib/文件夹中。
更新:刚刚注意到从本地运行 jar 本身会抛出该错误,尽管从 eclipse 运行良好。
最佳答案
发生这种情况的原因可能有多种:
1.) 当您复制 javafx jar 时,权限错误,因此运行 java 程序的进程无法读取它。
2.) 运行 java 程序的用户在类路径上没有 JAVA_HOME/lib 文件夹。如果您以服务级别用户身份运行程序,但以另一个用户身份安装 java,则可能会发生这种情况。有时,可能没有在其他用户的个人资料中设置 JAVA_HOME。
3.) 目标 jar 的不同版本可能会移动类,因此使用版本 1.0 运行将可以工作,但 2.0 将导致类未找到异常,因为该类已移动到新包中。确保两个地方都有相同版本的 javafx jar。
关于java - 系统范围 Jar 引发未找到类异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460432/