我正在尝试使我在 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
我希望我能帮上忙。
祝大家好运!