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

JavaFX“位置是必需的。”即使是在同一个包裹里

邵祺
2023-03-14

我试图让我的JavaFX程序运行,但有一些困难。我一直得到一个错误的java.lang.NullPointerExc农田:位置是必需的。fxml文件与Application类在同一个包中。这是我非常简单的代码

package com.kromalights.designer.entry;

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

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));
        primaryStage.setTitle("Kromalights Designer");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


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

这是我main.fxml文件的副本:

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

<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<?scenebuilder-stylesheet mailStyles.css?>
<?import java.net.*?>

<BorderPane prefHeight="300.0" prefWidth="300.0" xmlns:fx="http://javafx.com/fxml/1"
        xmlns="http://javafx.com/javafx/2.2"
        fx:controller="com.kromalights.designer.entry.Controller">
    <bottom>
        <Pane prefHeight="200.0" prefWidth="200.0"/>
    </bottom>
    <center>
        <Pane prefHeight="200.0" prefWidth="200.0"/>
    </center>
    <left>
        <VBox prefHeight="200.0" prefWidth="100.0"/>
    </left>
    <top>
        <HBox prefHeight="100.0" prefWidth="200.0"/>
    </top>
    <stylesheets>
        <URL value="@mainStyles.css" />
    </stylesheets>
</BorderPane>

控制器类确实存在,并且位于fxml文件中指定的包中。我所有的名字都是正确的,我认为它们应该在哪里。我错过了什么?我确实尝试过重命名我的fxml文件,以防出现名称问题。请帮忙。仅供参考,我正在OSX上使用Intellij IDEA。

更新:这是一个Maven问题。我为这个项目设置了Maven,这导致了这个问题。我暂时删除了Maven,这样我可以在没有它的情况下继续工作。有人知道我在使用Maven时如何最好地处理这个问题吗?

共有3个答案

司徒兴德
2023-03-14
URL url = new File("src/main/java/ua/adeptius/goit/sample.fxml").toURI().toURL();
Parent root = FXMLLoader.load(url);

这对我有帮助,因为

getClass.getResource("path")

总是返回空值;

蒋何平
2023-03-14

将文件移动到main/resources目录可以正常工作。

姚凯歌
2023-03-14

在我的情况下,上述所有问题都不是问题所在。

我的问题在我更换的时候解决了:

getClass().getResource("ui_layout.fxml")

与:

getClass().getClassLoader().getResource("ui_layout.fxml")
 类似资料:
  • 问题内容: 我正在尝试运行JavaFX程序,但遇到了一些困难。我不断收到错误消息“ :必须提供位置”。fxml文件与Application类位于同一软件包中。这是我非常简单的代码: 这是我的main.fxml文件的副本: 控制器类确实存在,并且位于fxml文件中指定的包中。我所有的名字都是正确的,也是我认为应该的位置。我想念什么?我确实尝试重命名我的fxml文件,以防这是一个名称问题。请帮忙。仅供

  • 所以我尝试构建一个JavaFX应用程序,但得到一个NullPointerException“location is required”。我已经找到了一些关于这个的问题,但没有一个答案对我有效。 我已经试过了: 并将fxmldocument.fxml移动到默认包,但这些操作对我都不起作用。这是Netbeans创建的未经改动的JavaFX FXML应用程序,我真的不明白为什么这不能开箱即用... 项目

  • 我得到了 fxml_example.fxml FXMLExAmple.java

  • 但是当我创建新的JavaFX FXML应用程序时,这个应用程序和上面的几乎一样,但是阶段是由FXML和css定义的,而不是字节代码。这一个可以作为windows应用程序完美地工作,但不能作为浏览器应用程序工作 下面是工作应用程序的代码: 并且此应用程序在浏览器中无法工作并引发异常: 有人能帮帮我吗?

  • 我在使用Java和FXML文件时遇到了一个问题。 现在我找了好几个小时,找不到任何解决我问题的东西,所以我最后的希望是针对我的具体情况提出问题(我知道像这个问题和其他问题,但没有一个真正帮助我在这方面。 简单说明:我有一个Eclipse Java项目,我的类(对于这个问题很重要)在包[Project Name]/src/measurements.gui中。我的FXML文件在[Project Nam

  • 我一直在尝试用JavaFX来设置Maven。尽管我对Maven和JavaFX没有经验,但我没想到这会是一个如此大的挑战。我的Java知识相当扎实(包括Swing),没想到设置起来会有这么大的困难。 我的也不太大: 我正在使用JavaFX Maven插件构建应用程序。运行之后,一切看起来都很好,所有构建都成功了。但当我尝试运行应用程序时,却出现以下错误: 经过一些粗略的调试,问题似乎出现在我正在加载