JDK缺少JavaFx相关的包怎么解决?

1.问题出现

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

#1.先解释一下JavaFx包是干什么的:
	JavaFX主要用于桌面应用GUI的开发工具包(桌面图形界面开发包),现在B/S、移动端比较火,而JavaFX目前主要用于开发桌面程序,上个十年C/S架构的程序也还很有市场的。而现在这些年,不是非要客户端调用本地、复杂硬件等特殊要求(如医院的各项设备),一般都做成bs架构了,javafx只能说生不逢时,市场使用越来越少。

#2.Java GUI 库(桌面图形界面开发库)发展历程分为三个阶段
	AWT > SWING > JAVAFX, 随着 JavaFx 的发布,加速 SWING 的被淘汰。

2.问题分析

出现JavaFx包不能导入的异常,第一感觉肯定是jar包依赖问题,maven没有引入jar包。于是查了一下资料了解到 JavaFx包是JDK自身自带的,不需要maven引入。看了看项目里引入的JDK包,并没有jfxrt.jar这个包。如下图:

为了进一步确认是不是IDEA工具 加载jar包问题,于是进到JDK安装目录:jdk1.8\jre\lib\ext 查看了一下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.8\jre\lib\ext目录里,有jfxrt.jar包,到此问题解决 O(∩_∩)O。【Oracle jdk下载地址

3.总结

平时的开发中还是尽量使用oracle jdk,OpenJDK虽然是开源能看源码,但跟oracle jdk相比还是存在一些不足,比如:OpenJDK只包含最精简的JDK,源代码不完整,不包含如Java DB、 JAXP、JavaFX这些的jar软件包,所有在使用时会出现一些摸不着头脑的问题。

 

 

  • 18
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值