我最近在eclipse项目中更改了几个包的构建路径。最终文件结构应该保持不变。那么曾经的包main.java.edu.umb.cs现在是edu.umb.cs.以前所有链接都工作正常,但现在我收到了Tokanagrammar.fxml无法找到的错误。以下是Tokanagrammar.java(下图中最顶层的扩展包):
..getResource("../../../../resources/fxml/Tokanagrammar.fxml"));
EDIT1:用于读取资源的代码
public void start(Stage primaryStage) {
try {
AnchorPane page = (AnchorPane) FXMLLoader.load(Tokanagrammar.class.getResource("../../../../resources/fxml/Tokanagrammar.fxml"));
Scene scene = new Scene(page);
primaryStage.setScene(scene);
primaryStage.setTitle("Tokanagrammar 0.1");
primaryStage.show();
} catch (Exception ex) {
Logger.getLogger(Tokanagrammar.class.getName()).log(Level.SEVERE, null, ex);
}
}
同样,在我从构建路径中取出一些src之前,这个工作正常。据我所知,资源不必须在构建路径中才能被访问。我的项目有一个图像文件夹,例如,在构建路径之外没有任何问题。
那是什么给出的?我也可以轻松地将.fxml文件移动到Tokanagrammar.java所在的包中并编辑链接,它可以正常工作。但是,根据规范必须采用的方式。
非常感谢任何帮助。
答案 0 :(得分:1)
您应该相对于类路径的根目录加载资源,而不是依赖于(更改)相对于Tokanagrammar
类的路径。这尤其正确,因为资源与类完全不同(就路径分辨率而言)。试试这个:
AnchorPane page = (AnchorPane) FXMLLoader.load(
Thread.currentThread().getContextClassLoader().
getResource("fxml/Tokanagrammar.fxml"));
请注意,只要src/main/resources
中的所有资源都被复制到类路径的根目录,这都会有效。