Intellij idea JavaFX可以';t build artifact-fx:deploy在此JDK中不可用

Intellij idea JavaFX可以';t build artifact-fx:deploy在此JDK中不可用,intellij-idea,javafx,artifact,Intellij Idea,Javafx,Artifact,我有一个JavaFX项目,我想将其构建为Jar文件。然而,当我尝试这样做时,我得到了一个错误 Error:Java FX Packager: Can't build artifact - fx:deploy is not available in this JDK 去年我在这里发现了一个类似的例子,但他们似乎没有得出任何结论。发生这种情况是因为您有许多JDK由另一方安装和编译,并由另一方运行,或者您在Intellij中创建工件时使用了Javafx应用程序jar功能,不幸的是,该功能被破坏了。在

我有一个JavaFX项目,我想将其构建为Jar文件。然而,当我尝试这样做时,我得到了一个错误

Error:Java FX Packager: Can't build artifact - fx:deploy is not available in this JDK

去年我在这里发现了一个类似的例子,但他们似乎没有得出任何结论。

发生这种情况是因为您有许多JDK由另一方安装和编译,并由另一方运行,或者您在Intellij中创建工件时使用了Javafx应用程序jar功能,不幸的是,该功能被破坏了。在继续执行以下步骤之前,请确保使用相同的JDK版本编译和运行。 这是您要解决的问题:

1-创建启动器类: Launcher类将调用运行应用程序的主JavaFx类。选择直接通过主类创建Jar将出错,并给出以下错误:

    Error: Could not find or load main class Main
    Caused by: java.lang.ClassNotFoundException: Main 
您的Launcher类应该如下所示:

    public class Launcher {
        public static void main(String[] args) {
            MainGUI.main(args);
        }
    }
2-关于构建Jar
  • 您可能仍然有以前版本中的
    META-INF
    文件夹,因此请删除它

  • 将项目构建为JAR:

  • 选择主启动器类,选中“复制到输出目录并通过清单链接”,然后按Ok

  • 按Apply,然后按OK

  • 转到构建->构建工件->重建


  • 在JetBrains的网站上,我找到了一篇很好的文章,这篇文章非常有用。在这一节中,它说

    fx:deploy
    任务是以前使用的Ant插件的一部分 作为Java Packager的一部分,在ant javafx.jar中发布。蚂蚁 当前JDK版本的jpackage中不包含插件

    如果您使用的是JDK版本9及更高版本,请使用第三方 包装解决方案。例如,请参阅第节 在JavaFX官方文档中


    这是一个很好的总结。此外,如果有人将java(或javaFX)应用程序打包为本地应用程序(例如Windows exe、Linux rpm或DEB包或OS X DMG安装的应用程序),则考虑使用作为AN实现的实用程序。对于某些应用程序,这可能比JavaFX的当前选项更适合需求。@jewelsea感谢您提到jpackage。你能帮我弄清楚这件事吗;我试图为JavaFX模块化Maven项目创建一个本机可执行文件。通过使用,我可以用一个启动程序脚本创建一个运行时映像&然后用jpackage打包它,我得到了一个捆绑的exe设置,它工作得很好。但是,它会安装启动程序脚本。但我需要的是安装正在运行的exe文件。有什么建议吗?问一个新问题Tharindu。通过这样做,多人可以回答,您将有更好的机会找到具有适当知识的人为您创建一个好的答案,并且将有一个记录,有人可以搜索以获得类似问题的答案。下面是一个优秀的视频,解释了第二个选项:
    Error:Java FX Packager: Can't build artifact – fx:deploy is not available in this JDK