烦死人的JavaFX警告,终于解决了

WARNING: Loading FXML document with JavaFX API of version xx by JavaFX runtime of version xx

        这个格式的JavaFX警告,用过JavaFX的一些小伙伴可能见过这个警告。虽然不影响程序运行,但是实在不美观。在我这里,这个警告是这样的

        为了解决这个警告,我是煞费苦心。最终还是万能的stackoverflow给了我答案

        (原stackoverflow贴地址—>点我

         Your FXML file has an xmlns="http://javafx.com/javafx/10.0.1 attribute in the root element. This is automatically added by Scene Builder. If you simply get rid of the 10.0.1, or replace it with 8.0.241, then the warning will go away. The version added by Scene Builder corresponds to the version of Scene Builder itself, since the tool's capabilities are determined by which version of JavaFX it was built for. The warning is simply telling you that if you used JavaFX APIs which require 10.0.1 then the application will fail on earlier versions 

        啥意思呢?意思就是,在你的fxml文件中有xmlns="http://javafx.com/javafx/10.0.1 这样一行。而我的是xmlns="http://javafx.com/javafx/17

                 为啥不一样呢?因为这个值是由Scene Builder编辑FXML文件的时候自动添加的。在程序运行时这个值会被拿来和JDK版本进行比对。这个值取决于你用的Scene Builder版本。我用的是17那么这个值就是xmlns="http://javafx.com/javafx/17 

        因为该工具的功能取决于它是为哪个版本的JavaFX构建的。这个警告只是告诉你:您使用的JavaFX API需要17,那么应用程序在早期运行环境中运行有可能会失败。

        这里的失败是什么意思呢?比如这样。你在Scence Builder里编辑了一个功能,比如你给一个球形添加了颜色渐变,但是由于版本问题或者不同版本的fxml的写法问题或者是否支持等等问题,这个fxml可能在低版本中无法被正常解析,导致显示不出来渐变效果。

        当然是有可能出现问题。如果你确认不会产生任何问题。你可以用下面的方法解决警告:

        由于我用的是jdk10(JavaFX Runtime Version 10),10和17对不上,于是产生了上面的警告。解决方法很简单,把xmlns的值改成你jdk版本就OK啦。

        可以看到,改了版本之后,确实没有警告了。不过,这种方法属于“自欺欺人”法,它相当于告诉JavaFX,“我在使用低版本哦~”,而事实上,你在使用高版本。

        正确的做法是让你的JDK版本和JavaFX版本以及Sence Builder版本匹配。比如我的Sence Builder是17,那我就去用javafx17和jdk17而不是用着jdk10还去哄骗javafx10说“我用的是低版本哦~”。当然。换高版本肯定要折腾半天。毕竟从java11开始,javafx就不再内置了,想用只能折腾依赖,从java9开始又有了模块化,换高版本搞适配既要配置依赖又要配置模块,这个时候很容易出问题,出了问题几乎很难解决,好不容易吧编译出来能跑了,打包成jar,又寄了。那简直是要命的。不过你也可以选择换低版本sence builder。当然,如果实在不愿意折腾。有时候“欺骗”一下javafx也是可以的。上面的那种方法大概率是不会出问题的。

  • 27
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值