javaFXでLocation is not set.がでたら

javaFXではUI記述としてfxmlで記述されたファイルをリソースとして読み込みますが

リソースなのでパスを指定しなければいけません。リソースのパスを間違えると以下のようなエラーがでます。

Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
	at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$99(LauncherImpl.java:182)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Location is not set.

と言ってもリソースのoutputパスやリソースをどう出力するかはプロジェクトの設定に大きく依存します。

そこで下記のようなプログラムを実行するとパスがわかります。{Mainクラスの名前}は適切なものに置き換えてください

URL url = getClass().getResource("{Mainクラスの名前}.class");
System.out.println(url.toString());

こうして出力されたパスはMainクラスが出力された場所になります。

その出力パス上にfxmlファイルが適切に出力されているか、パスは大丈夫そうかを確認すると解決します。

ちなみに上記で出力されたパスからのfxmlファイルを相対パスで記述するとfxmlファイルを読み込むことができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください