Intellij Javafx神器 - 你是怎么做到的?

Lou*_*ers 7 javafx jar intellij-idea executable-jar artifact

我一直在努力将我的javafx应用程序转换为jar文件.我正在使用Java 1.7 update 7.

Oracle有一些信息,但它似乎分散在各处.Intellij几乎正在完成这项工作,但我收到以下错误:

java.lang.NoClassDefFoundError: javafx/application/Application
Run Code Online (Sandbox Code Playgroud)

这似乎说我需要告诉java jfxrt.jar在哪里...如果我将这个jar添加到我的类路径信息中为intellij中的清单构建 - ctrl + shift + alt + s - >工件 - >输出布局选项卡 - >类路径,然后我得到另一个错误:

 Could not find or load main class com.downloadpinterest.code.Main
Run Code Online (Sandbox Code Playgroud)

在我的类路径中包含jfxrt.jar似乎很奇怪...

我也试过创建一个蚂蚁脚本,但我觉得IntelliJ是90%的方式 - 我只需要一些帮助来弄清楚为什么我需要包含jfxrt.jar,以及为什么我的主类没有找到(我猜我需要以某种方式将它添加到类路径?).

谁能让我知道发生了什么?我之前有一个基本的gui工作正常,但JavaFX似乎让生活变得复杂!

Urs*_*pke 4

您的假设是正确的,您需要将 JavaFX 添加到类路径中。
它位于[JDK]/jre/lib/jfxrt.jar

要在运行时提供 JavaFX,您可以将其与您的应用程序捆绑在一起(如本Oracle 指南中所示) ,或者 将 Java 7 Update 6 作为您的应用程序的要求,然后[JAVA_HOME]/lib/jfxrt.jar尽早将其添加到应用程序的类路径中。

第一个选项意味着您需要做更多工作,但绝对确保所有用户都拥有相同版本的库 - 并且您也可以在使用时捆绑 JRE。第二个版本没有提供这种确定性,但更容易实现。

作为第二个选项的变体 - 如果您实际上可以捆绑 JRE - ,您也可以将其捆绑在您的发行版中,然后包含 shell-scripts/batch-file/executable-wrapper 以使您的程序使用它。这样,您就可以从选项 I 中获得所有确定性,而仅从选项 II 中适度提高难度。