7

我已经安装了 jdk1.7.0_07 并更改了 PATH 但我仍然无法导入 javafx,我应该做些什么来解决这个问题?

4

1 回答 1

11

确保 /jre/lib/jfxrt.jar 在您的编译路径上。

例如对于 win7 上的 64 位 jdk7u6 版本,jfxrt.jar 位于此处:

C:\Program Files\Java\jdk1.7.0_06\jre\lib\jfxrt.jar

jfxrt.jar 是故意为 jdk1.7.0_06 离开 java 运行时路径的,直到 JavaFX 和其余 java 基础设施之间的进一步测试完成。这意味着非 JavaFX 程序不可能受到可能由 JavaFX 引起的兼容性问题的影响。迄今为止,我从未遇到任何兼容性问题——我相信这只是 Oracle 在这方面的谨慎举措。

在未来的版本中,jfxrt.jar 应该被添加到 Java 的默认编译和运行时类路径中,并且下面的一些信息应该是不相关的。您可以跟踪将 jfxrt.jar 添加到默认 java 运行时的请求。

从命令行编译和运行 JavaFX 程序

下面的示例是一个名为的 JavaFX 应用程序类javafxsamples.AudioPlaylist

如果您从命令行编译,请使用以下命令进行编译:

javac -cp ".;C:\Program Files\Java\jdk1.7.0_06\jre\lib\jfxrt.jar" javafxsamples/AudioPlaylist.java

要从命令行运行,您可以使用:

java -cp ".;C:\Program Files\Java\jdk1.7.0_06\jre\lib\jfxrt.jar" javafxsamples.AudioPlaylist

不过,建议您使用 javafxpackager 打包您的应用程序,而不是手动将 jfxrt.jar 添加到您的类路径中(javafxpackager 打包的应用程序将嵌入一个启动器,它会为您找到 jfxrt.jar 并将其添加到类路径中)。

javafxpackager -createjar -nocss2bin -appclass javafxsamples.AudioPlaylist -srcdir . -outfile AudioPlaylist.jar

之后,您无需在类路径上指定 jfxrt.jar 位置即可运行应用程序:

java -jar AudioPlaylist.jar

使用 IDE 编译和运行 JavaFX 程序

NetBeans

如果您使用的是 NetBeans 7.2+,您可以创建一个 JavaFX 项目类型,当您将 jdk1.7.0_07 设置为您的平台时,它应该会自动找到 JavaFX jfxrt.jar 并将其放在项目的类路径中。

如果您使用的是e(fx)clipse ,请确保您使用的是最新版本 (0.0.14+),该版本具有更好的检测 JavaFX 的功能。

主意

Intellij Idea 11.1.3 会自动将 jre lib 目录中的所有文件添加到它的项目类路径中,因此您不应该遇到编译错误。请注意,Idea 的行为在这方面是错误的,它不应该真的这样做,但最终你会得到能够从 idea 编译和运行 JavaFX 类的预期行为。

使用 maven 构建 JavaFX 程序

  • 使 jfxrt.jar 成为您的 maven 项目的系统依赖项,以便将其放在路径上。
  • 使用 maven antrunner 执行 javafx ant 任务进行部署打包。

这个maven 项目中提供了一个使用 maven 打包 JavaFX 的示例。


即使您使用 IDE 或 Maven 进行构建,仍然建议您使用 javafx ant 任务或 javafxpackager 实用程序打包您的应用程序以进行交付,因为这应该为您的应用程序提供最强大的部署解决方案。

于 2012-09-13T22:31:20.483 回答