2016-10-24 13 views
0

をロードしない:のJavaFXのgetResourceは、私は次のコードでのJavaFXコントローラにFXMLファイルをロードしようとしているFXML

loader.setLocation(BaseController.class.getResource("/baseLayout.fxml")); 
baseLayout = loader.load(); 

しかし、私が代わりにこの例外を取得しています:

java.lang.IllegalStateException: Location is not set. 

問題は、getResourceがFXMLを正しく読み込んでいないことです。したがって、はnullをパラメータとして受け取るため、例外が発生します。loader.load()

私はそこでいくつかの答えを見てきましたが、問題はgetResourceの間違ったパスである可能性があります。しかし、私が知る限り、 "/baseLayout.fxml"はresourcesフォルダ内のそれぞれのfxmlファイルを指しているはずです。ここで

は私のプロジェクトのファイルツリーです:

  • プロジェクト/
    • のsrc/
      • メイン/
        • のjava/
        • リソース/
          • baseLayout.fxml

は、それが動作するようになっていませんか?私は実際にはうまく働いていましたが、突然それはありません。私は何をすべきか分からない。電子の天候それは次のとおりです。@James_Dは、天気予報をチェックしてください生じた瓶は、私のリソースフォルダを含む上述したよう

+0

リソースフォルダがクラスパスのルートにデプロイされている限り、動作するはずです。ビルドフォルダの内容をチェックして、FMXLファイルがあることを確認します。 –

+0

私はそれが問題だと思うかもしれません、私はFXMLファイルを見ません。彼らはなぜ展開されていないのですか? –

+0

これはIDE設定なので、IDEによって異なります。プロジェクトの設定に移動し、リソースフォルダがビルドに含まれていることを確認する必要があります(また、FXMLファイルがデプロイメントにコピーされることがあります)。 –

答えて

0

あなたはこの

loader.setLocation(BaseController.class.getResource("/resources/baseLayout.fxml")); 

または

loader.setLocation(BaseController.class.getResource("../resources/baseLayout.fxml")); 

ようしかし、この前にFXMLをロードしてみてくださいビルド中に存在するかどうか。

関連する問題