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

标签 java javafx javafx-2

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

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

线程“main”java.lang.NoClassDefFoundError中出现异常:javafx/application/Application

如果我更改为启动另一个入口点,而 .sh 文件中不涉及 JavaFX,则它可以工作。

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

我在 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/

相关文章:

java - 简单的 Java 方法无论用户输入如何都返回 0

java - 使用 Intellij idea 警告初始化 Jmockit

java - 下载二进制文件会抛出 org.jvnet.mimepull.MIMEParsingException : java. io.IOException:流已关闭

java - Jasper 报告组件在 JavaFX Swing 节点中未正确呈现

javafx-2 - 从 FXML 文件引用节点

java - 如何在 Liferay 6 中创建默认文档类型和元数据集?

java - 如何创建 JavaFX 纹理

java - 在 JavaFx 8 TabPane 标题中显示所选选项卡前面的一些选项卡

charts - JavaFX 2.x : How to edit lines drawned on XY LineChart?

java - 制作一个 "memory dump"的java应用程序?