[RESOLVIDO] Exception in Application start method (JavaFX)

Harrow!

Tô com uma dúvida aqui e acho que é em relação a “encontrar” uma classe.

Essa é a minha estrutura de diretórios agora:
a

Meu código está assim:

public class main extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("../login/login.fxml"));
        stage.setScene(new Scene(root));
        stage.show();
    }

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

E a exception completa é:

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$154(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 br.com.fulltime.fullcam.mosaicoDesktop.main.main.start(main.java:21)
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
	at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
	at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
	at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
	at com.sun.glass.ui.gtk.GtkApplication.lambda$null$48(GtkApplication.java:139)
	... 1 more

Até ai beleza, pesquisei e tudo indicava ser erro “ao achar a classe”, e eu tenho bastante problemas com isso (não entendi muito bem esse lance, se quiser me explicar agradeço <3), mas fui variando a linha que “acha” a classe, sem resultado. Variei com:

Parent root = FXMLLoader.load(getClass().getResource("login.fxml"));
Parent root = FXMLLoader.load(getClass().getResource("src/relativepath//login/login.fxml"));
Parent root = FXMLLoader.load(getClass().getResource("/home/caminho/src/relativepath/login/login.fxml"));

Eu gostaria de, além de ajuda para solucionar esse erro, entender o que devo fazer/saber nesses casos em que eu preciso achar um arquivo e tudo mais…

Se muda algo, estou usando o IntelliJ!

Eu fiz só essa parte do projeto num projeto separado e ele funcionou… Será que pode ser algo no main?

Update: Definitivamente a parte que importa tá igual… Vi algumas pessoas falando que eu n devo ter posto o controlador no FXML, mas ele tá assim:

fx:controller="br.com.mycompany.myproduct.module.login.controllerLogin">

Alguém? T_T

Mais um update:

marquei a pasta “resources” como “recursos” (mas toda vez que fecho o IntelliJ ele desmarca, alguém sabe pq?) e fiz:

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

ainda nd :c

Alguém? T_T

Salve Curiosity.

Tenta isso:

public void start(Stage stage) throws Exception {
        FXMLLoader loader = new FXMLLoader(this.getClass().getResource("/fxml/loginScene.fxml"));
        Parent root = loader.load();
        stage.setScene(new Scene(root));
        stage.show();
    }
1 curtida

Se existe um céu, você vai pra lá!!!

1 curtida

Hahahaha

Gostei da foto da Noodle. Também gosto muito de Gorillaz.