我一直在努力将我的javafx应用程序转换为jar文件。我正在使用Java 1.7 update 7。
Oracle有some information,但它似乎分散在各处。 Intellij几乎正在完成这项工作,但我收到以下错误:
java.lang.NoClassDefFoundError: javafx/application/Application
这似乎在说我需要告诉java jfxrt.jar在哪里...如果我将这个jar添加到我的类路径信息中,用于intellij中的清单构建 - ctrl + shift + alt + s - >文物 - >输出布局选项卡 - >类路径,然后我得到另一个错误:
Could not find or load main class com.downloadpinterest.code.Main
在我的课程路径中包含jfxrt.jar似乎很奇怪......
我也试过创建一个蚂蚁脚本,但我觉得IntelliJ占90% - 我只需要一些帮助来弄清楚为什么我需要包含jfxrt.jar,以及为什么我的Main类没有找到(我猜我需要以某种方式将它添加到类路径中?)。
有谁能让我知道发生了什么?我之前有一个基本的gui工作正常,但JavaFX似乎让生活变得复杂!
答案 0 :(得分:4)
您的假设是正确的,您需要将JavaFX添加到类路径中
它位于[JDK]/jre/lib/jfxrt.jar
。
要在运行时提供JavaFX,您可以将其与应用程序捆绑在一起,如Oracle guide 或所示。
使Java 7 Update 6成为您的应用程序的一项要求,然后在应用程序最早的方便时将[JAVA_HOME]/lib/jfxrt.jar
添加到类路径中。
第一个选项意味着更多的工作,但绝对确保所有用户都拥有相同版本的库 - 您也可以捆绑JRE。 第二个版本没有提供这种确定性,但更容易实现。
作为第二个选项的变体 - 如果实际上可以捆绑JRE - 你也可以将它捆绑在你的发行版中,然后包含一个shell-scripts / batch-file / executable-wrapper来制作你的程序用它。 这样,您可以从选项I中获得所有确定性,而选项II中的难度只有适度提升。
答案 1 :(得分:4)
我遇到了同样的问题。 但我发现这篇博文:Packaging JavaFX 2 Applications in IntelliJ IDEA 12.1显示了如何在Intellij 12.1
中完成显然,IntelliJ能够生成特殊的“JavaFX应用程序”工件。它会自动将您需要的所有内容捆绑在jar文件中。