1.问题出现
今天迁移一个老项目时,在本地启动遇到一个奇怪的问题:IDEA工具不能导入javafx包,导致项目编译失败。如下图:IDEA编辑器导入jar包 import javafx.util.Pair 异常。

的被淘汰。
JavaFX主要用于桌面应用GUI的开发工具包(桌面图形界面开发包),现在B/S、移动端比较火,而JavaFX目前主要用于开发桌面程序,上个十年C/S架构的程序也还很有市场的。而现在这些年,不是非要客户端调用本地、复杂硬件等特殊要求(如医院的各项设备),一般都做成bs架构了,javafx只能说生不逢时,市场使用越来越少。
AWT > SWING > JAVAFX, 随着 JavaFx 的发布,加速 SWING
2.问题分析
出现JavaFx包不能导入的异常,第一感觉肯定是jar包依赖问题,maven没有引入jar包。于是查了一下资料了解到 JavaFx包是JDK自身自带的,不需要maven引入。看了看项目里引入的JDK包,并没有jfxrt.jar这个包。如下图:

为了进一步确认是不是IDEA工具 加载jar包问题,于是进到JDK安装目录:jdk1.8jrelibext
查看了一下jar包,JDK安装目录里果然是没有jfxrt.jar这个包。JDK目录如下图:

JavaFx 包是JDK自带的,然而安装目录又没有?原因可能出在JDK版本上,于是又下载了一个JDK1.7的版本安装,再进入安装目录ext下查看jar包,如下图,还是没有jfxrt.jar包。

安装了两个版本的人JDK都没有这个包,为什么JDK的安装目录没有这个自带的 jfxrt.jar 包?一顿狂度娘后,在GitHub的一个项目上看到一个 issue,也是同样的问题,大致原因是:open Jdk缺少javafx 相关的包,需要使用Oracle JDK(参考:openjdk缺少 javafx 相关的包怎么解决)。于是看了一下本地JDK的版本,卧槽、果然是open Jdk。如下图:

#openjdk和oracle jdk的区别
这里只说和JavaFX相关的区别,如果你使用的是oracle jdk8以上的版本,那么Java中是自带JavaFX的,不需要安装就能够直接运行,一般不会有问题。但是如果你和我一样使用的是openjdk比较新的版本,那么Java中是不带有JavaFX的,需要我们自己安装。
找到问题原因后,重新下载了Oracle JDK安装,再次查看安装目录jdk1.8jrelibext
目录里,有jfxrt.jar包,到此问题解决 O(∩_∩)O。【Oracle jdk下载地址】
3.总结
平时的开发中还是尽量使用oracle jdk,OpenJDK虽然是开源能看源码,但跟oracle jdk相比还是存在一些不足,比如:OpenJDK只包含最精简的JDK,源代码不完整,不包含如Java DB、 JAXP、JavaFX这些的jar软件包,所有在使用时会出现一些摸不着头脑的问题。

版权声明:本文内容来自CSDN:有盐先生,遵循CC 4.0 BY-SA版权协议上原文接及本声明。
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
原文链接:https:
如有涉及到侵权,请联系,将立即予以删除处理。
在此特别鸣谢原作者的创作。
此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。