【问题标题】:Failed to start application in javaFX project在 javaFX 项目中启动应用程序失败
【发布时间】:2026-02-25 11:15:04
【问题描述】:

在我将 Maven 依赖项添加到我的 JavaFX 程序并创建一个名为 Algorithm 的新包后,我的应用程序无法启动。

抛出以下异常:

原因:java.lang.RuntimeException:应用程序启动方法中的异常 原因:java.lang.NullPointerException:需要位置。

等等……

我试过了:
JavaFX "Location is required." even though it is in the same package

Exception in Application start method java.lang.reflect.InvocationTargetException

两者都不起作用

下图中是我的项目结构,非常感谢任何帮助。看来 sample.fxml 是无效的...

编辑:
重新定位资源目录中的 fxml 文件也不起作用

【问题讨论】:

标签: java javafx


【解决方案1】:

我刚刚大致复制了这段代码,把它放在我的 IntelliJ 上,它就像一个魅力。也许您只是缺少资源名称上的/

这是我使用的确切代码:

package hello;

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

import java.io.IOException;

public class Hello extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent parent = FXMLLoader.load(Hello.class.getResource("/hello.fxml"));
        Scene scene = new Scene(p, 400, 400);
        primaryStage.setTitle("my app");
        primaryStage.setScene(scene);
        primaryStage.centerOnScreen();
        primaryStage.show();
    }

    public static void main(String[] args) throws IOException {
        launch(Hello.class);
    }
}

FXML 文件:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Text?>
<AnchorPane xmlns="http://javafx.com/javafx"
            xmlns:fx="http://javafx.com/fxml"
            fx:controller="hello.Hello"
            prefHeight="400.0" prefWidth="600.0">
    <VBox>
        <Text>Hello</Text>
    </VBox>
</AnchorPane>

使用 IntelliJ 运行。作品。创建一个 Jar,使用 java -jar 运行...也可以。

【讨论】:

  • 尝试在没有 Maven 的 IntelliJ 中创建一个新的 Java 项目。把上面的java文件放到src/。创建一个新的resources 目录,将其标记为resources root(右键单击它并选择选项)。运行它。有用!!!我可以保证 :) 尝试使用 Java 8 来避免模块问题。
  • 您好,我几分钟前做过,现在我将语言级别更改为 11 后又做了一次,非常感谢
  • 太棒了!那么问题到底出在哪里?
  • 我不知道似乎是语言级别 6 导致了问题(不确定)无论如何您的解决方案的解释是什么?
  • Java 6 没有 JavaFX :) 我认为它是在 Java 8 上添加的。在此之前,它是单独分发的。现在,再次使用 11,它已从 JDK 的 std 发行版中删除...
【解决方案2】:

您的 IDE IntelliJ 使用模式识别从类路径加载资源文件以匹配文件扩展名。默认情况下,IntelliJ 包含 JPG、PNG、HTML 等扩展名...

这意味着您需要手动指定要编译器查找的文件扩展名,这就是 FXML。

以下是有关如何实现此目的的一些简单说明: https://www.jetbrains.com/help/idea/working-with-projects.html

【讨论】:

  • 请不要只链接解决方案。稍微解释一下,以便该链接只是对您的答案的补充,而不是绝对必要的。
  • 是的,确切地说,这可能是评论,而不是答案,想象一下 - 官方文档将被移动/删除/具有新结构,然后你会找到这篇文章,但死链接.. 请,请始终尝试将解决方案直接放入帖子中。
  • 感谢您的批评,您是对的,希望我的编辑有所帮助。
  • 我该怎么办?链接没有告诉我答案
  • 使用Maven时,不要配置IDE,配置Maven。参见例如*.com/questions/9063296/…