我有一个小型 Java 桌面 应用程序,没有任何 GUI。我使用 Ant 来开发、运行、构建和发布它。我没有为它创建 jar 文件。我使用 .sh 文件通过版本中的附加 JRE 来启动/运行它。
现在我在其上添加了一个简单的 JavaFX 2 GUI。我仍然可以使用 Ant 进行开发、运行、构建和发布。 Ant 文件中没有针对 JavaFX 的特殊目标或添加内容。发布后,我无法再使用现有的 .sh 文件运行它。我收到以下错误:
线程“main”java.lang.NoClassDefFoundError中出现异常:javafx/application/Application
如果我更改为启动另一个入口点,而 .sh 文件中不涉及 JavaFX,则它可以工作。
我非常确定如果我使用 Swing,它会正常工作。为什么JavaFX很特别?我是否必须使用 Ant 或 javafxpackager 进行特殊部署?有什么简单的方法可以解决这个问题吗?它只是一个桌面应用程序。
我在 Linux 上使用 jdk/jre 1.7.0_51。
我是 JavaFX 新手。不知道是否值得学习。
最佳答案
当您使用 Java 7 或更早版本时,默认情况下 JavaFX 运行时 jar 文件不在类路径中。您需要将其包含在类路径中。
将 jar jfxrt.jar
添加到类路径中;您可以在 Java 安装的 jre\lib
目录中找到它。
对于 Java 8,这将会改变;在那里,JavaFX 将默认位于类路径中,您无需自己将 jar 添加到类路径中。
关于java - 为什么使用JavaFX时Java桌面应用程序需要特殊部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22390227/