我读过的每个地方,从Java 7u7开始,JavaFX2都与JRE和JDK捆绑在一起。所以我很困惑为什么当我运行Eclipse时,它告诉我“导入javafx无法解析”。
我没有安装其他JDK或JRE但是7u9,那么为什么我无法从Eclipse中看到JavaFX2?
非常感谢:)
答案 0 :(得分:8)
不幸的是,对于jdk7u9,当我们创建一个新的Java项目时,Eclipse不会将jfxrt.jar
目录中的jre\lib
文件添加到项目构建路径库中。您必须手动执行此操作,或者您可以将e(fx)clipse插件安装到Eclipse,这将使您的JavaFX开发更容易:)
Eclipse遵循JRE 7u9默认引导类路径的默认设置(不包括jfxrt.jar
)。未来的JRE版本会将jfxrt.jar
放在引导类路径上,因此您无需手动将jfxrt.jar
文件添加到项目构建路径库中。您可以跟踪此JRE feature。
答案 1 :(得分:2)
将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文件中。