我正在尝试加载XML资源,我这样做:
fxmlLoader = new FXMLLoader();
root = fxmlLoader.load(getClass().getResource("Document.fxml").openStream());
当我运行我的代码时,我得到了这个错误:
null/../css/button.css
javafx.fxml.LoadException:
unknown path:23
当我看第23行时,我有这个:
<URL value="@../css/button.css" />
这有效:
fxmlLoader = new FXMLLoader();
root = fxmlLoader.load(getClass().getResource("Document.fxml"));
但是当我运行以下
时controller = (DocumentController)fxmlLoader.getController();
controller
是null
如何修复css问题?
答案 0 :(得分:3)
这是一个猜测,但我认为问题在于您为FXMLLoader
而不是URL
提供输入流。因此,FXMLLoader
不知道FXML
资源的位置,因此无法解析网址标记中的..
。这将解释错误消息:
null /../ css / button.css
javafx.fxml.LoadException:
未知路径:23
您提供的路径相对于null
,因为FXMLLoader不知道FXML文件的位置;另请注意&#34;未知路径&#34;作为FXML的来源。
试试这个(这是更常见的)
fxmlLoader = new FXMLLoader(getClass().getResource("Document.fxml"));
root = fxmlLoader.load();
我认为它只为控制器返回null,因为加载fxml时出错。
答案 1 :(得分:0)
在.fxml中,将<URL value = "@../css/button.css"/>
更改为<URL value = "@/css/button.css" />
。如果你有“css”或“image”,那就是一样的。