0

我最近更改了 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 所在的包中并编辑链接,它工作得很好。但是,根据规范必须是描述的方式。

任何帮助是极大的赞赏。

包资源管理器

4

1 回答 1

1

Tokanagrammar您应该加载相对于类路径根目录的资源,而不是依赖(更改)相对于您的类的路径。尤其如此,因为资源与类位于完全不同的包中(就路径解析而言)。试试这个:

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

请注意,只要将其中的所有资源src/main/resources都复制到类路径的根目录,这将起作用。

于 2013-03-24T22:37:59.640 回答