Toda vez que eu faço a construção do meu .jar ele me retorna um erro dizendo que não foi possível encontrar o arquivo fxml, porém, na IDE ele funciona normal, o que pode ser?
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:473)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:372)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:945)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:973)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:198)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3246)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3210)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3179)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3152)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3129)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3122)
at sample.Login.start(Login.java:17)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:919)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(PlatformImpl.java:449)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
... 1 more
Exception running application sample.Login
Classe principal:
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class Login extends Application {
private static Stage stage;
@Override
public void start(Stage stage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("./view/ViewLogin.fxml"));
stage.initStyle(StageStyle.UNDECORATED);
stage.setScene(new Scene(root));
stage.setTitle("Login");
stage.show();
setStage(stage);
}
public static Stage getStage() {
return stage;
}
public static void setStage(Stage stage) {
Login.stage = stage;
}
public static void main(String[] args) {
launch(args);
}}
Controller Principal:
import com.jfoenix.controls.JFXButton;
import conexao.ConexaoMySql;
import dao.LoginDao;
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;
import model.ModelLogin;
import sample.Login;
import sample.Principal;
import java.net.URL;
import java.sql.SQLException;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ControllerLogin implements Initializable {
ModelLogin modelLogin = new ModelLogin();
LoginDao loginDao = new LoginDao();
@FXML
private JFXButton btnEntrar;
@FXML
private TextField txtAcesso;
@FXML
private PasswordField txtSenha;
@FXML
private FontAwesomeIcon close;
@FXML
private FontAwesomeIcon minimizar;
@Override
public void initialize(URL location, ResourceBundle resources) {
//Método para clicar no botão e entrar no sistema
btnEntrar.setOnMouseClicked((MouseEvent e) -> {
/**
* Instância das classes -> Conexão e a Janela principal
*/
ConexaoMySql conn = new ConexaoMySql();
Principal viewPrincipal = new Principal();
try {
//Verifica se o que o usuário digitou está contido no banco de dados
conn.executeSql("SELECT * FROM tbl_usuarios where cod_acesso='" + txtAcesso.getText() + "'");
conn.resultSet.first();
//Se o que o usuário digitou tiver no banco, verifica se a senha que o usuário digitou é válida
if (conn.resultSet.getString("senha").equals(txtSenha.getText())) {
/**
* Se a senha estiver válida, a janela atual é fechada
*/
Login.getStage().close();
try {
/**
* Abre a janela principal mostrando um alerta dizendo que o login foi efetuado
*/
viewPrincipal.start(new Stage());
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Information");
alert.setHeaderText("Login Efetuado");
alert.setContentText("Seja bem-vindo, login efetuado com sucesso!");
alert.show();
} catch (Exception ex) {
Logger.getLogger(ControllerLogin.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Usuário/Senha inválidos");
alert.setContentText("Usuário ou senha inválidos!");
alert.show();
}
//Se o usuário não estiver presente no banco de dados -> Mensagem de erro
} catch (SQLException e1) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Usuário/Senha inválidos");
alert.setContentText("Usuário ou senha inválidos!");
alert.show();
}
});
//Fecha a janela e encerra o sistema
close.setOnMouseClicked((MouseEvent event) -> {
System.exit(0);
});
//Minimiza a janela
minimizar.setOnMouseClicked((MouseEvent e) -> {
Login.getStage().setIconified(true);
});
}
}