当前位置: 首页 > 知识库问答 >
问题:

java NullPointerException在尝试使用jar文件[duplicate]运行应用程序时发生

裴宏壮
2023-03-14

当我试图通过控制台通过jar文件运行应用程序时,在登录事件期间,它会给出一个异常“java.lang.NullPointerException:Location is required”。但当我使用intellij IDE运行应用程序时,它工作得很好。

@FXML
public void loginAction(ActionEvent event) throws Exception {
    errorLabel.setText("");
    authenticate(event);
}

    private void authenticate(Event event) throws Exception {

    if (validateInput()) {
        String username = userName.getText().trim();
        User user = UserDAO.searchUserByName(username);

        if (user == null) {
            userName.setText("");
            password.setText("");
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Login Error");
            alert.setHeaderText("Failure message");
            alert.setContentText("Invalid username!!");
            alert.showAndWait();

        } else {

            String userPassword = user.getPassword();
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(password.getText().getBytes());
            byte byteData[] = md.digest();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < byteData.length; i++) {
                sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));

            }

            String role = user.getRole();
            String id = user.getUserId();
            sessionRole = role;
            userId = id;

            if (sb.toString().equals(userPassword)) {

                if (role.equals("Admin")) {
                    windows("../views/admin.fxml", "Admin Dashboard");
                } else {
                    windows("../views/pos.fxml", "Point of Sales");
                }
            } else {
                userName.setText("");
                password.setText("");
                Alert alert = new Alert(Alert.AlertType.ERROR);
                alert.setTitle("Login Error");
                alert.setHeaderText("Failure message");
                alert.setContentText("Invalid password!!");
                alert.showAndWait();

            }

        }

    }
}
   private void windows(String path, String title) throws Exception {
    Stage stage;
    Parent root;
    root = FXMLLoader.load(getClass().getResource(path));
    stage = (Stage) loginButton.getScene().getWindow();
    Scene scene = new Scene(root);
    stage.setTitle(title);
    stage.setScene(scene);
    stage.show();
}

它给出了行的例外情况:

windows("../views/admin.fxml", "Admin Dashboard");

我也尝试给出fxml文件的绝对路径。它只在我使用jar文件运行应用程序时发生。jar中也没有文件丢失。这可能是什么原因造成的。提前道谢。

共有1个答案

晏沈义
2023-03-14

..作用于文件系统上的资源,因为它是文件系统上指向父目录的实际条目。但是在JAR中不存在,所以当类和资源打包在JAR中时,指向父目录是不起作用的。

因此我们不能使用..来指示文件位置,因此我们必须使用项目路径中的绝对路径。

 类似资料:
  • 我有一个Spring启动应用程序,当通过intellij运行时工作正常。但是当我从jar运行它时,我得到了下面的异常。 下面是我的pom文件。 我试着用两个 和 然后我通过java运行jar-jar-DParamName="有些Param" 我做错了什么?我是Spring的新手。任何帮助都将不胜感激。

  • 当我使用 在intelij运行期间,一切正常。 在jar的案例中,我尝试了: 等等。它们导致正确的路径,例如: > 文件:/D:/Projects/myProject/target/classes/static/assets/config/fileName(对于toExternalForm) /D: /Projects/myProject/target/classes/static/assets/

  • 我是Grails的新手,我用GVM工具安装了它,并试图从终端运行一个默认应用程序,只需尝试以下命令:Grails create-app demo和Grails run-app,我得到了一个巨大的错误: 编辑:问题解决了,只需升级JDK版本。

  • 问题内容: 我刚刚开始学习Java,并且只知道少量的代码,但是,这仍然是一个简单的程序。它更多是一个恶作剧程序,但主要只是为了测试我是否可以创建一个jar文件。 这是代码: 我将其保存到名为的文件中,然后使用进行编译 这有效,当我使用运行它时 它也可以正常工作。 因此,然后我尝试创建一个jar文件。我使用命令 而且有效。之后,我双击jar文件,它出现一个错误。 所以我在cmd中运行它 并得到这个错

  • 首先,抱歉英语不好。我从Flatter开始,我已经安装了所有必要的东西,但是当尝试运行测试应用程序(在模拟器或设备中)时,我会收到下面的错误消息。 正在启动lib\main。调试模式下XT1097上的dart。。。正在初始化gradle。。。正在解析依赖项…*运行Gradle时出错:从以下位置退出代码1:C:\Testes\first\u app\android\gradlew。bat应用程序:属

  • 注意:test.class文件也使用了example.jar文件中的类文件,有自己的包结构。 我知道我可以将它们放在一个jar文件中,不幸的是我需要将test.class文件分开。