在我阅读的所有地方,从 Java 7u7 开始,JavaFX2 都与 JRE 和 JDK 捆绑在一起。所以我很困惑为什么当我运行 Eclipse 时,它告诉我“无法解析导入 javafx ”。
除了 7u9,我没有安装其他 JDK 或 JRE,那么为什么我无法从 Eclipse 中看到 JavaFX2?
非常感谢 :)
不幸的是,对于 jdk7u9,当我们创建一个新的 Java 项目时,Eclipse 不会将jfxrt.jar
您jre\lib
目录中的文件添加到项目构建路径库中。您必须手动完成,或者您可以将e(fx)clipse插件安装到 Eclipse,这将使您的 JavaFX 开发更容易:)
Eclipse 遵循 JRE 7u9 默认引导类路径的默认设置(不包括jfxrt.jar
)。未来的 JRE 版本将放置jfxrt.jar
在引导类路径中,因此您无需手动将jfxrt.jar
文件添加到项目构建路径库中。您可以跟踪此JRE 功能。
添加jfxrt.jar
到项目构建路径将使 eclipse 能够找到它并允许您在 eclipse 中开发和执行您的代码。但是,当您部署您的软件时,它将不再能够找到jfxrt.jar
,除非您也将它放在类路径中。这变得一团糟,因为您必须四处寻找jdk
/的位置jre
并在里面搜索jfxrt.jar
.
据我了解,长期计划是jfxrt.jar
从lib
文件夹移动jre
到lib/ext
文件夹。这会将其放置在默认情况下可以找到的某个位置,而无需将内容添加到您的类路径中。不幸的是,这在 Java 8 发布之前不太可能发生!
同时,最简单的解决方案似乎是使用捆绑javafxpackager
工具来创建您的 jar 文件,而不是使用jar
工具。还有一个ant
基于解决方案,但我不熟悉它。打包程序将创建您的 jar 文件,并插入一个启动器类,该类会找到 jfxrt.jar 并在运行时将其动态添加到您的应用程序的类路径中。如果jre
或安装javafx
太旧,它还会抱怨并提示用户下载较新的版本。然后它通过您在命令行中指定的类调用您的应用程序。(通常是你main()
方法的类)。
它适用于本机 javafx 应用程序和普通的旧 Swing 应用程序。如果您的 jar 文件的清单中有额外的内容,例如另一个 ClassPath 条目,您也可以在命令行上指定它以包含在新的 jar 文件中。