繁体   English   中英

IntelliJ IDEA中的Maven和JavaFX项目

[英]Maven and JavaFX project in IntelliJ IDEA

我在尝试在IntelliJ中配置Maven和JavaFX项目时遇到了麻烦。

首先,我不知道该怎么做,所以找到了以下解决方案:

  1. 像在Intellij中通常一样创建常规的JavaFX项目
  2. 通过单击以下命令为其添加Maven支持:右键单击项目->“添加框架支持”,然后检查Maven

在第一步应用程序正常工作之后(当然,因为它只是正常的JavaFX项目),然后在第二步程序包更改之后,因此我必须为每个类设置程序包; 我已经做到了,而且没有看到错误。 但是,当我尝试运行该应用程序时,出现以下错误,如图所示:

而且我也将sample.fxml移到资源文件夹。

也许我需要将groupId设置为某种值,但我不知道是什么,我尝试将其设置为包的名称(示例),但没有用。 在此处输入图片说明

其余代码:

Main.java:

package sample;

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("../../resources/sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();

    }


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

sample.fxml:

<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
          xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>

Controller.java

package sample;

public class Controller {
}

这对我来说更容易。

  1. 在名为samples resources下创建文件夹(与src/main/java
  2. 更改以下行: Parent root = FXMLLoader.load(getClass().getResource("../../resources/sample.fxml")); 对于
    Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml"));

我重述了您说的内容,即我做了一个JavaFX项目,然后添加了框架支持。

添加Maven支持后,由于它是资源,因此将sample.fxml移到resources目录中。

我最终不得不更改package sample; package main.java.sample; MainController类中。

之后,我必须将sample.fxml控制器引用从fx:controller="sample.Controller"更改为fx:controller="main.java.sample.Controller"

此后,它运行成功。

错误的核心是java.lang.NullPointerException: Location is required 当您添加Maven支持时,它会移动您的目录,因此您的package sample; 不再正确,因为sample目录不再是项目的直接子级。 因此,您必须更改package指向的位置,在这种情况下, sample目录位于main.java.sample 您也一定不要忘记编辑sample.fxml文件,因为它通过fx:controller引用了Controller类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM