在Eclipse中重构项目结构后加载资源

时间:2013-03-24 22:15:15

标签: eclipse buildpath

我最近在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所在的包中并编辑链接,它可以正常工作。但是,根据规范必须采用的方式。

非常感谢任何帮助。

Package Explorer

1 个答案:

答案 0 :(得分:1)

您应该相对于类路径的根目录加载资源,而不是依赖于(更改)相对于Tokanagrammar类的路径。这尤其正确,因为资源与类完全不同(就路径分辨率而言)。试试这个:

AnchorPane page = (AnchorPane) FXMLLoader.load(
    Thread.currentThread().getContextClassLoader().
        getResource("fxml/Tokanagrammar.fxml"));

请注意,只要src/main/resources中的所有资源都被复制到类路径的根目录,这都会有效。