IntelliJ IDEA中的Maven和JavaFX项目

时间:2017-01-24 23:18:10

标签: maven intellij-idea javafx

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

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

  1. 像在Intellij中一样创建常规JavaFX项目
  2. 点击以下内容添加Maven支持:右键点击项目 - > “添加框架支持”,然后检查Maven
  3. 在第一步应用程序工作之后(当然,因为它只是普通的JavaFX项目),然后在第二步之后包已经改变,所以我不得不为每个类设置包;我已经做到了,我没有看到任何错误。但是当我尝试运行应用程序时,我得到以下错误,在图片上:

    我还将sample.fxml移动到资源文件夹。

    也许我需要将groupId设置为某些东西,但我不知道是什么,我已经尝试将其设置为包的名称(示例),但它不起作用。 enter image description here

    其余代码:

    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 {
    }
    

2 个答案:

答案 0 :(得分:5)

这对我来说更容易。

  1. 在名为resources的{​​{1}}下创建文件夹(samples中相同)
  2. 更改行:src/main/java
    Parent root = FXMLLoader.load(getClass().getResource("../../resources/sample.fxml"));

答案 1 :(得分:0)

我重写了你所说的,即我创建了一个JavaFX项目,然后添加了框架支持。

在我添加Maven支持后,我将sample.fxml移动到resources目录中,因为它是一个资源。

我最终必须在package sample;package main.java.sample;类中将Main更改为Controller

在此之后,我必须将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文件,因为它通过Controller引用了您的fx:controller课程。