Scene Buidlerを使って作ったfxmlファイルを、Javaに

Writer: admin Type: duanmo Date: 2019-03-06 00:00
Scene Buidlerを使って作ったfxmlファイルを、Javaに読み込ませる作業がうまくいきません。import javafx.application.Application;import javafx.fxml.FXMLLoader;import javafx.scene.Parent;import javafx.scene.Scene;import javafx.stage.Stage;;public class Soft extends Application { @Override public void start(Stage primaryStage) throws Exception{ Parent root = FXMLLoader.load(getClass().getResource("テスト.fxml")); primaryStage.setScene(new Scene(root,600,400)); primaryStage.show(); } public static void main(String[] args) { launch(args); } }よくわかりませんが、ParentをAnchorPaneに変えてみてもダメでした。エラーメッセージはこんな感じですException in Application start methodjava.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)Caused by: 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$155(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.NullPointerException: Location is required. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097) at Mypacage.Myclass.start(Myclass.java:12) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) ... 1 moreException running application Mypacage.Myclass全然意味が分かりません・・・Builderで作ったので、fxmlのほうにミスがあることはないと思うので、main関数周りの誤字でしょうか、それとも何かの設定でしょうか、お詳しい方いらっしゃいましたら、よろしくお願いします。この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。###こういうときは、出力されてるExceptionとメッセージでググります以下をググると> java.lang.NullPointerException: Location is requiredすると、ファイル名やファイルパスが間違ってることがわかりますhttps://www.rocher.kyoto.jp/arbr/?p=144なのでファイル名に日本語が使われてるけどいいのか?テスト.fxmlを置いてるディレクトリがカレントになってるけど、本当に一致してるのか?以下カレントディレクトリをログ出力するコードString path = System.getProperty("user.dir"); System.out.println(path);↑これと「テスト.fxml」のパスが合ってるかチェックなどを確認してみてくださいまぁ詳しい人ではないので間違ってたらすいません(>_<)ナイス0
###ご回答ありがとうございます。お返事遅れましてすみません。おかげで一応解決いたしました。はじめは「builderで作って、デスクトップに保存、メインのクラスと同じ場所に移動」としてeclipseで起動できませんでした。次に「ファイル→新規→ファイル」で新しいfxmlファイルを作り、builderで作ったものを新しいfxmlファイルにコピペすると正常に動作しました。また、作動したファイルを、別の場所に移動してからもとの場所に戻すと、作動しなくなりました。理屈はよくわかりませんが、やりたいことはできそうなのでよかったです。親切なご回答ありがとうございました。
###この回答は投票によってベストアンサーに選ばれました!

 

TAG