【问题标题】:Cannot run jar on ubuntu with JFX无法使用 JFX 在 ubuntu 上运行 jar
【发布时间】:2023-03-21 06:28:01
【问题描述】:

美好的一天, 我正在尝试在 ubuntu 虚拟机上运行一个名为 graphdb-native-app-8.8.1-jfx.jar 的程序。我安装了最新版本的 java,并确保 JAVA_HOME 设置为正确的 java-version。

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 来解决。其他人从他们自己的 .java 文件开始,他们想用 jfx 编译和运行,并按照https://openjfx.io/openjfx-docs/#install-javafx中的指南解决

任何帮助将不胜感激,在此先感谢

【问题讨论】:

  • 如果graphdb-native-app-8.8.1-jfx.jar 设计为在 8 上运行,您需要 Java 8 并为其安装 JavaFX 8(例如,如果您使用 OpenJDK 8),如以下答案中所建议的那样。如果您使用 Java 11,则需要 JavaFX 11,并且可以按照您发布的链接中的说明安装它,但是您需要在命令行中使用 module-pathadd-module 参数运行(请参阅引用链接的结尾)。

标签: java ubuntu javafx jar ubuntu-18.04


【解决方案1】:

你的 java 版本是 11,javafx for java 8 尝试安装 java 8 版本,然后再试一次。

【讨论】:

  • 这是这个答案和其他一些东西的结合。 JAVA_HOME 环境变量也需要设置为 java 8,并且 CHMOD 也是允许读取文件所必需的。所以在文件上使用 'chmod u=rwx' 然后使用 java 8 执行。如果有人在 GRAPHDB 独立服务器上遇到问题,情况也是如此。 'graphdb.bat' 启动脚本需要使用 chmod 进行修改,然后才能在安装了 java 8 的情况下使用它。谢谢大家!
【解决方案2】:

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. 下载JavaFXhere
  2. 将罐子解压到您选择的目录(例如/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。但我不会仅仅因为这个原因而建议这样做。

【讨论】:

    猜你喜欢
    • 2016-04-06
    • 2020-10-07
    • 2012-09-27
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多