2017-07-28 19 views
0

私はJavaでプログラムを書いていますが、私はGUIのためにJavaFXを使っています。今日まで私はjavafxを単独でコードに使用しており、すべてが円滑に実行されています。 私はmavenの使用を開始しましたが、プロジェクトはコンパイルも実行も実行もしません。JavaFxプロジェクトはmavenでコンパイルされますが、実行されません

Exception in Application start method 
java.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 main.java.Main.start(Main.java:19) 
    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 more 
Exception running application main.java.Main 

これは私のメインクラスです:

public static void main(String[] args) { 
    launch(args); 
} 

@Override 
public void start(Stage primaryStage) throws Exception { 
    Parent root = FXMLLoader.load(getClass().getResource("../fxml/AuthenticationForm.fxml")); 
    primaryStage.setTitle("Gym Master 1000"); 
    primaryStage.setScene(new Scene(root)); 
    primaryStage.show(); 
    primaryStage.setResizable(false); 
    primaryStage.centerOnScreen(); 

    root.getChildrenUnmodifiable(); 
} 

私は他のプロジェクトでMavenを使用しませんが、決してJavaFXのでてきました。私は何をしますか?

+0

https://stackoverflow.com/questions/34755630/javafx-location-is-not-set-error jarファイルとしてパッケージ化するときは、リソース名に '..'を使用しないでください。 –

答えて

0

まず、.fxmlファイルがメインクラスと同じディレクトリにあり、.getResource("complete path")の完全パスを使用し、getResource("../fxml/AuthenticationForm.fxml"))でないことを確認してください。有効ではありません。

はまた、あなたが使用することができます。代わりに

Parent root = FXMLLoader.load(getClass().getResource("../fxml/AuthenticationForm.fxml")); 

詳細については、あなたはherehereを見ることができます。 彼の情報からJames_Dに感謝します。

+1

['..'は有効なリソース名ではありません](https://docs.oracle.com/javase/8/docs/technotes/guides/lang/resources.html)、これは修正されるとは思わないそれ。 –

+0

いくつかの調査の後、あなたは正しいです、 "../fxml/AuthenticationForm.fxml"は有効な名前ではありません、私はすぐに私の質問を編集します。ありがとう。 –

関連する問題