无法执行我的 .jar JavaFX 应用程序

无法执行我的 .jar JavaFX 应用程序

我正在尝试使我在 Windows 上制作的 JavaFX 应用程序适用于 Ubuntu。我制作了 .jar 文件,它在 Windows 10 上运行良好,但在 Ubuntu 上无法运行。无论我从桌面双击它(启用以可执行文件运行)还是从终端运行它,我都会不断收到某种形式的错误,提示它找不到我的 Main 类。Javac 也不起作用,在那里出现同样的错误。这是我的 MANIFEST 文件:

Manifest-Version: 1.0
Implementation-Title: 
Implementation-Version: 
Permissions: sandbox
JavaFX-Version: 8.0
Class-Path: 
Created-By: JavaFX Packager
Implementation-Vendor: 
Main-Class: Main

我已经使用apt install default-jre命令安装了 Java。有什么想法吗?

这是我运行时遇到的错误java -jar myApp.jar

Could not find or load main class Main
Caused by: java.lang.NoClassDefFoundError: javarx/application/Application

在安装了 javafx(正如一些人指出的那样,这是必需的)之后,它仍然不起作用。运行该java命令会出现同样的结果(见上文)。以下是运行该javac命令的一些示例:

javac myApp.jar或者javac myApp

error: Class names, 'myApp.jar', are only accepted if annotation processing is explicitly requested

javac -cp myApp.jar或者javac -cp myApp

javac: no source files

答案1

我假设您使用的是 Ubuntu 18.04 或 Ubuntu 18.10。它们将 Java 11 作为默认 jre。Java 11 没有 Java FX。您必须在 Ubuntu 上安装单独的 Java FX 运行时,或者使用 Maven 或 Gradle 在您的应用程序内打包 Java FX 的所有必要库(模块)。对于打包,您需要在 Linux(Ubuntu)内进行构建,因为 Maven/Gradle 会下载适用于 Linux 的库。是的,构建是针对每个操作系统的。

更多信息:https://stackoverflow.com/questions/52013505/how-do-i-use-javafx-11-in-eclipse/52015953#52015953

有关 Java FX 11 的更多信息:https://openjfx.io/openjfx-docs/#install-java

如果你的应用程序是使用包含 Java FX 的 Java 8(Java 1.8)制作的,并且你不想更改为 Java 11,那么你需要在 Ubuntu 上安装 Open Java 8 + 安装 openjfx

另一个解决方案是安装包含 JavaFx 的 Oracle Java 8 for Ubuntu。

有关如何安装 Java 的更多信息: https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04

我希望我能帮上忙。

祝大家好运!

相关内容