我已经安装了 jdk1.7.0_07 并更改了 PATH 但我仍然无法导入 javafx,我应该做些什么来解决这个问题?
1 回答
确保 /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 实用程序打包您的应用程序以进行交付,因为这应该为您的应用程序提供最强大的部署解决方案。