无法使用JFX在ubuntu上运行jar

问题描述 投票:1回答:2

美好的一天,我正在尝试在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 ubuntu javafx jar ubuntu-18.04
2个回答
2
投票

它接缝你的java版本是11和javafx for java 8尝试安装java 8版本,然后可能再试一次。


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安装JavaFX for Java 11:

  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。但我不建议仅仅因为这个原因。

© www.soinside.com 2019 - 2024. All rights reserved.