使用 OpenJDK 和 JavaFX 进行自包含、模块化打包

使用 OpenJDK 和 JavaFX 进行自包含、模块化打包

编辑:重复问题的答案中链接的教程让我解决了我在此处写到的问题。我之前看到过这个问题,当时我认为它不适用。但我错了,我不知道如何解释这个错误。要安装模块化 OpenJDK 和 JavaFX 的工作副本,我同意“入门”教程http://openjfx.io是一种合适的资源。/编辑


我有相对简单的源代码,我想在 Ubuntu 上编译。代码是在 Eclipse/Windows 中开发的,并使用了 JavaFX。我希望简单地复制文本源并进行模块化编译,最终目标是使用 jlink 为 Linux 安装制作一个独立的程序。代码非常简单,命令行命令 javac(带有模块选项)和 jlink 就足够了。

我安装了 OpenJDK 10,认为这没什么问题,因为它包含 jlink 实用程序并支持模块化编程。

> java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)

我可以使用它来运行 Java jar,但如果它们需要 JavaFX 则不行。

> java -jar rnk.jar
Error: Could not find or load main class com.adonax.keyboard.LaunchKeyboard8
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application

第一次尝试解决这个问题,我使用以下命令安装了 OpenJFX:

sudo apt-get install OpenJFX

据我所知,它安装得很好,但我在推荐此安装的任何 Ask Ubuntu 或 StackOverflow 帖子上都找不到测试或验证安装的说明。尝试运行包含 JavaFX 代码的 jar 仍然失败,并出现相同的错误。

使用 OpenJDK 8 不是一个解决方案。目标是能够使用命令行 javac 和 jlink,而 Java 8 不支持模块。

我试图避免使用 Oracle 的 Java 9 或 10,正如我研究过的许多答案所建议的那样,因为据我所知,Oracle 需要支付许可费

我承认,我对 Linux 和 Ubuntu 的知识很薄弱,完全不知道该如何继续前进。提升构建所需的专业知识本文将是一个巨大的飞跃。

我希望最后几行能够证明我的问题不会被标记为“重复问题”。

是否有一些更简单的事情被我忽略了?

相关内容