8

我整天都在尝试将我的 javafx 应用程序转换为 jar 文件。我正在使用 Java 1.7 更新 7。

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

java.lang.NoClassDefFoundError: javafx/application/Application

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

 Could not find or load main class com.downloadpinterest.code.Main

不过,必须在我的类路径中包含 jfxrt.jar 似乎很奇怪......

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

谁能告诉我发生了什么?我之前有一个基本的 gui,它工作得很好,但是 JavaFX 似乎让生活变得复杂了!

4

2 回答 2

4

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

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

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

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

于 2012-09-03T09:40:19.073 回答
4

我有同样的问题。但我发现这篇博文:在 IntelliJ IDEA 12.1 中打包 JavaFX 2 应用程序,展示了如何在 Intellij 12.1 中执行此操作

显然 IntelliJ 有能力生成一个特殊的“JavaFX 应用程序”工件。它会自动将所需的所有内容捆绑到您的 jar 文件中。

于 2013-07-30T09:05:50.953 回答