我一整天都在尝试将我的javafx应用程序转换为jar文件。我正在使用Java1.7更新7。
Oracle有一些信息,但似乎分散在各处。Intellij几乎完成了这项工作,但我得到了以下错误:
java.lang.NoClassDefFoundError: javafx/application/Application
这似乎是说我需要告诉javajfxrt. 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似乎让生活变得复杂了!
您的假设是正确的,您需要将JavaFX添加到类路径中。
它位于[JDK]/jre/lib/jfxrt. jar
。
要在运行时提供JavaFX,您可以将其与您的应用程序捆绑在一起,如本Oracle指南所示,或者使Java7 Update 6成为您的应用程序的要求,然后在应用程序方便的时候将[JAVA_HOME]/lib/jfxrt. jar
添加到类路径中。
第一个选项对您来说意味着更多的工作,但绝对确保所有用户都拥有相同版本的库——并且您也可以在使用时捆绑JRE。第二个版本不提供这种确定性,但更容易实现。
作为第二个选项的变体——如果您确实可以捆绑JRE——您也可以将其捆绑到您的发行版中,然后包含一个shell脚本/批处理文件/可执行文件包装器以使您的程序使用它。这样,您可以从选项I中获得所有确定性,而从选项II中仅略微提高难度。
我也有同样的问题。但我发现了这篇博文:在IntelliJ IDEA 12.1中打包JavaFX 2应用程序,展示了如何在Intellij 12.1中执行此操作
显然IntelliJ有能力生成一个特殊的“JavaFX应用程序”工件。它会自动将所需的一切捆绑在您的jar文件中。