使用java11构建和部署javafx应用程序

hum*_*zed 13 java javafx intellij-idea java-11 javafx-11

我按照https://blog.jetbrains.com/idea/2013/03/packaging-javafx-2-applications-in-intellij-idea-121/中的步骤进行操作

但是当我尝试构建工件时,就像在最后一步一样,我得到了这个错误

在此输入图像描述

错误:Java FX Packager:无法构建工件 - fx:deploy在此JDK中不可用

在此输入图像描述

我知道JavaFX已经从java11中删除了我的问题是我应该怎么做才能构建一个.jar.exe

这是一个快速测试的hello world应用程序.

use*_*518 8

以下方法适用于我在 Windows 和 Ubuntu 上使用 IntelliJ 的 OpenJDK 11 和 OpenJFX 11,并成功创建了一个 jar,该 jar 可以java -jar filename.jar在目标机器上安装 JavaFX 的情况下运行。请记住,JavaFX jar 是平台相关的。所以Windows jar需要在Windows上编译,Linux jar在Linux上编译。

我的主要方法扩展了应用程序...

public class Main extends Application {
Run Code Online (Sandbox Code Playgroud)

因此,首先创建一个类似于 Start.java 的新 Java 类——它链接到原始的 Main 方法。

public class Start {
    public static void main(String[] args){
        Main.main(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你制作 .jar 文件;

文件 > 项目结构 > 工件

单击 + > 选择 JAR > 从具有依赖项的模块

对于 Main 类,选择 Start.java > 单击 Ok

javafx jar 应该自动提取(如果它们不是手动添加的)

单击应用和确定

构建 > 构建工件 > 构建

java -jar filename.jar即使在没有安装 JavaFX 的机器上,创建的文件也应该可以正常运行。


Bar*_*240 5

在Intelij中,不再使用JavafX JAR导出选项。您可以使用“带有依赖项的Jar-From模块”将其导出为常规jar。这将导出一个有效的Jar,但是要运行它,您需要将javaFx路径和模块添加到命令中。

拥有jar之后,run命令应如下所示:

java --module-path PATH_TO_YOUR_JAVAFX_LIB_FOLDER --add-modules javafx.controls,javafx.fxml,javafx.graphics,javafx.web -jar yourJar.jar
Run Code Online (Sandbox Code Playgroud)

我用这个制作了一个YouTube教程:https : //youtu.be/HGHu-SzL-5E

  • 这很好用,非常感谢。但是有没有办法直接双击jar就可以运行呢?我以前可以在 Java 8 上做到这一点。 (3认同)

小智 2

不幸的是,您将无法以这种方式使用 JFX11 构建 jar,因为显然打包器已从 JFX SDK 中删除。希望它能在未来的版本(也许是 12)中实现。阅读此处了解更多详细信息:

https://youtrack.jetbrains.com/issue/IDEA-200721包含以下 2 个链接:

https://bugs.openjdk.java.net/browse/JDK-8212780

https://openjdk.java.net/jeps/343

作为临时解决方案,您可以简单地使用/降级到版本 10,其中仍然包含所需的打包程序。

  • 对于任何寻找 java10 的人,您可以在这里找到它 https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase10-4425482.html (2认同)