2013-02-09 3 views
1

я получаю InvocationTargetException когда я пытаюсь вызвать метод из контроллера (JavaFX), код идет следующим образом:InvocationTargetException при вызове метода контроллеров - JavaFX

public void start(Stage stage) throws Exception { 

    URL location = getClass().getResource("startScreen.fxml"); 
    FXMLLoader loader = new FXMLLoader(); 

    loader.setLocation(location); 
    loader.setBuilderFactory(new JavaFXBuilderFactory()); 

    //Getting hte controller 
    StartScreenController s = (StartScreenController)loader.getController(); 

    //Where error occurs 
    s.setParent(this); 

    Parent root = (Parent) loader.load(location.openStream()); 

    Scene scene = new Scene(root); 
    stage.setScene(scene); 
    stage.show(); 
} 

Он отлично работает, когда я удалить " setParent ".

Это, похоже, сработало для других (насколько я видел, когда пытаюсь решить это сам).

Любая помощь будет оценена, спасибо.

Я получаю ошибку (s.setParent является строка 38)

Exception in Application start method 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at com.javafx.main.Main.launchApp(Main.java:642) 
    at com.javafx.main.Main.main(Main.java:805) 
Caused by: java.lang.RuntimeException: Exception in Application start method 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403) 
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47) 
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.NullPointerException 
    at johnsoft.dndcommunication.DndCommunication.start(DndCommunication.java:38) 
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319) 
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:206) 
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:173) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) 
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73) 
    ... 1 more 
Java Result: 1 
+0

кажется, что вы пытаетесь назвать Главный материал класса внутри контроллера, эта ссылка http://stackoverflow.com/questions/14059954/calling-view-method-in-controller/14063918#14063918 – invariant

+0

Имеет InvocationTargetException является основной причиной? Если да, то какой? –

+0

Я отправлю сообщение об ошибке, хотя он говорит в комментариях, где возникает ошибка. –

ответ

2

Я думаю,
вы пытаетесь получить доступ к классу контроллера перед загрузкой файла FXML.

StartScreenController s = (StartScreenController)loader.getController(); 

// so StartScreenController s is null here thus NPE 
s.setParent(this); 

// here loading is happening after getting the controller class, which is wrong. 
// Get the controller after loading is completed. 

Parent root = (Parent) loader.load(location.openStream()); 
+0

@Uluk Biy: Вы можете мне помочь? http://stackoverflow.com/q/22243243/2722799 –

Смежные вопросы