美好的一天,我正在尝试在ubuntu虚拟机上运行一个名为graphdb-native-app-8.8.1-jfx.jar
的程序。我安装了最新版本的java,并确保将JAVA_HOME设置为正确的java版本。
java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
我还使用sudo apt-get install openjfx
来获取JavaFX(以及libopenjfx-java),并通过搜索更新确保它是最新版本:
sudo apt list --installed| grep jfx
libopenjfx-java/bionic,now 8u161-b12-1ubuntu2 all [installed]
libopenjfx-jni/bionic,now 8u161-b12-1ubuntu2 amd64 [installed]
openjfx/bionic,now 8u161-b12-1ubuntu2 amd64 [installed]
然而,每当我尝试运行jar时,我都会收到以下错误:
sudo /usr/lib/jvm/java-11-openjdk-amd64/bin/java -jar ./graphdb-native-app-8.8.1-jfx.jar
Error: Could not find or load main class com.ontotext.graphdb.free.GraphDBFree
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application
这导致相信linux VM无论如何都找不到javafx或认为它没有安装。
我已经搜索了类似问题的stackoverflow,但是大多数都是通过安装openjfx来解决的。其他人开始使用他们自己想要编译和运行jfx的.java文件,并按照https://openjfx.io/openjfx-docs/#install-javafx中的指南解决
任何帮助都将得到彻底的感谢,提前感谢
它接缝你的java版本是11和javafx for java 8尝试安装java 8版本,然后可能再试一次。
openjfx
包中包含Ubuntu 18.04
中Java 8的javafx库。只有来自Ubuntu 18.10
的软件包才包含Java 11的库。(参见https://packages.ubuntu.com/search?keywords=openjfx)
如果您的应用程序可以使用Java 8降级您的Java版本,那么您的问题应该得到解决。
如果您需要使用Java 11运行应用程序,可以按照链接的guide安装JavaFX for Java 11:
/opt/javafx-sdk-11.0.2/
)--module-path
和--add-modules
选项运行jar以指定JavaFX位置:
java -jar --module-path /opt/javafx-sdk-11.0.2/lib --add-modules=javafx.controls,javafx.fxml graphdb-native-app-8.8.1-jfx.jar
最后一个选项是将整个系统升级到Ubuntu 18.10
。但我不建议仅仅因为这个原因。