早上好,
我正在尝试在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或认为未安装javafx。
我已经搜寻了stackoverflow来解决类似的问题,但是大多数问题都像我一样通过安装openjfx来解决。其他人则从他们自己的.java文件开始,他们希望编译并使用jfx运行这些文件,并按照https://openjfx.io/openjfx-docs/#install-javafx
中的指南进行解决。任何帮助,将由衷感谢,谢谢!
答案 0 :(得分:2)
表明您的Java版本是11,而Javafx for Java 8尝试安装Java 8版本,然后可能再试一次。
答案 1 :(得分:1)
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进行链接以安装Java 11 for JavaFX:
/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
。但是我不建议仅出于这个原因。