烦死人的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 tools 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啦。
可以看到,改了版本之后,确实没有警告了。就喜欢清爽的感觉,哈哈
