【发布时间】:2016-12-05 10:48:32
【问题描述】:
我尝试将我的 javafx 应用程序压缩到 jar 中,当我运行时:
java -jar /home/roroco/Dropbox/rbs/ro_cmds_global/j/fileToClip/build/libs/server-1.0.jar -cp /home/roroco/Downloads/jdk1.8.0_74/jre/lib/ext/jfxrt.jar
它引发了这个错误:
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
我确定 jfxrt.jar 包含 javafx.application.Application
roroco@roroco /tmp/fileToClip $ jar tf
/home/roroco/Downloads/jdk1.8.0_74/jre/lib/ext/jfxrt.jar|gr Application\.class
com/sun/glass/ui/Application.class
com/sun/glass/ui/gtk/GtkApplication.class
javafx/application/Application.class
为什么会引发“ClassNotFoundException”?
更新
我的java版本是:
roroco@roroco ~/Dropbox/try/j/try $ java -version
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-0ubuntu4~14.04-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
【问题讨论】:
-
您不需要在类路径中指定该 jar 文件:
lib/ext文件夹中的 jar 文件默认位于类路径中。你确定java指向那个jdk 版本(java -version给出了什么?)。 -
@James_D 即使我删除了-cp,仍然会出现错误,我希望有办法解决它
-
您使用的是哪个 JDK 版本?
-
@James_D,谢谢,我找到了原因,因为我使用的是 openjdk 而不是 oracle jdk,当切换到 oracle jdk 时,一切正常
标签: java javafx jar classnotfoundexception