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 に答える