我的项目使用javafx jar并通过maven中的系统范围包含它。它在我的本地工作正常。现在,由于jar是通过系统范围包含的,所以它不包含在fat jar中,当我部署那个胖jar时,它为javafx类提供了ClassNotFound Exception。为什么它不能在我部署项目的机器上访问那个javafx jar,因为javafx也位于该机器的同一个lib文件夹中?
PS:我手动将javafx jar复制到JAVA_HOME / lib /文件夹中的那台机器上。
更新:刚刚注意到从本地运行jar会抛出那个错误,尽管从eclipse运行得很好。
答案 0 :(得分:0)
出现这种情况可能有很多原因:
1。)当您在javafx jar中复制时,权限是错误的,因此运行java程序的进程无法读取它。
2。)运行java程序的用户在类路径上没有JAVA_HOME / lib文件夹。如果您以服务级别用户身份运行程序,但将java安装为其他用户,则会发生这种情况。有时可能无法在其配置文件中为其他用户设置JAVA_HOME。
3.。)目标jar的不同版本可能会移动类,这样运行版本1.0将起作用,但2.0将导致找不到类的异常,因为该类已被移动到新的包。确保两个地方都有相同版本的javafx jar。