我正在尝试使我在 Windows 上制作的 JavaFX 应用程序适用于 Ubuntu。我制作了 .jar 文件,它在 Windows 10 上运行良好,但在 Ubuntu 上无法运行。无论我是从桌面双击它(启用作为可执行文件运行)还是从终端运行它,我都会不断收到某种形式的错误,它找不到我的 Main 类。Javac 也不起作用,在那里出现同样的错误。这是我的清单文件:
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
我假设您使用 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 的 Ubuntu 安装 Oracle Java 8。
有关如何安装 java 的更多信息: https ://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04
我希望我能帮上忙。
祝大家好运!