无法使用JFX在ubuntu上运行jar

时间:2019-03-14 12:43:19

标签: java ubuntu javafx jar ubuntu-18.04

早上好, 我正在尝试在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

中的指南进行解决。

任何帮助,将由衷感谢,谢谢!

2 个答案:

答案 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:

  1. 下载JavaFX here
  2. 将Jars提取到您选择的目录中(例如/opt/javafx-sdk-11.0.2/
  3. 使用--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。但是我不建议仅出于这个原因。