cmd 中的 JavaFX FXMLLoader 异常

标签 java javafx netbeans jar

我正在开发一个使用 JavaFX UI 的 mp3 播放器。当我在 NetBeans 中启动该应用程序时,它工作正常。但是,当我使用 Clean and Build 创建可执行 jar 并使用 cmd 启动它时,我遇到了 FXMLLoader 加载 fxml 文件的异常。

路径肯定有问题,对吧?

第一个项目结构

Project Structure

我创建了第二个应用程序并将所有内容存储在一个文件夹中。创建了一个可执行 jar 并且运行良好。

第二个项目结构

Project Structure

源代码(第一)

package jornsfx;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class JornsFX extends Application{

    @Override
    public void start(Stage stage)throws Exception{
        stage.setResizable(false);
        Parent root = FXMLLoader.load(getClass().getResource("/views/jornsFX.fxml")); 
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.setTitle("JornsFX");
        stage.show();
    }

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

异常(第一个)

Exception in Application start method
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        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(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
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(Unknown Source)
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 jornsfx.JornsFX.start(JornsFX.java:14)
        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 jornsfx.JornsFX

最佳答案

我不能确定地告诉你,但看起来像

getClass().getResource("/views/jornsFX.fxml")

在你的start()方法中是null。异常表明了这一点,并且屏幕截图中的文件名为 /views/JornsFX.fxml

关于cmd 中的 JavaFX FXMLLoader 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49552553/

相关文章:

java - "readonly if parameter"在 thymeleaf 中不起作用

JavaFX child 与项目

java - 使用 Netbeans 创建 .jar 文件后程序停止工作

php - 带有 Laravel 5 的 Netbeans 8.0 Composer

java - Visual Cobol 2010 和 eclipse

java - POM.xml 中的 tomcat 资源错误

java - 无法使用包中的方法将对象存储在 List<Object> 中?

JAVAFX:阻止用户打开新窗口,直到他关闭第一个窗口

javax.el.PropertyNotFoundException : Property 'genero' not found on type model.

java - Tomcat8 使用连接池到 OracleDB 的问题