为什么Java桌面应用程序在使用JavaFX时需要特殊部署?

时间:2014-03-13 20:31:25

标签: java javafx javafx-2

我有一个没有任何GUI的小型桌面应用程序。我使用 Ant 来开发,运行,构建和发布它。我没有为它创建一个jar文件。我使用 .sh 文件在版本中使用附加的JRE 启动/运行它。

现在我在它上面添加了一个简单的 JavaFX 2 GUI。我仍然可以使用Ant开发,运行,构建和发布。 JavaFX 的Ant文件中没有特殊目标或添加项。发布后,我无法再使用现有的.sh文件运行它。我收到以下错误:

线程中的异常" main" java.lang.NoClassDefFoundError:javafx / application / Application

如果我更改为在 .sh 文件中没有 JavaFX 的情况下启动另一个入口点,则可以正常工作。

我很确定如果我使用Swing它会正常工作。为什么 JavaFX 很特别?我是否必须使用 Ant javafxpackager 进行特殊部署?有什么简单的解决方法吗?它只是一个桌面应用程序。

我正在使用jdk / jre 1.7.0_51和linux。

我是JavaFX的新手。不知道是否值得学习。

2 个答案:

答案 0 :(得分:3)

使用Java 7或更早版本时,默认情况下JavaFX运行时jar文件不在类路径中。您需要将它包含在类路径中。

将jar jfxrt.jar添加到类路径中;您可以在Java安装的jre\lib目录中找到它。

这将改变Java 8;在那里,JavaFX默认位于类路径中,您不需要自己将jar添加到类路径中。

答案 1 :(得分:1)

确保您的应用程序中包含的JRE带来了您需要的JavaFX版本。最新版本的JRE应该没有任何问题,如下所述:

http://www.oracle.com/technetwork/es/java/javafx/downloads/index.html