[英]Maven and JavaFX project in IntelliJ IDEA
我在尝试在IntelliJ中配置Maven和JavaFX项目时遇到了麻烦。
首先,我不知道该怎么做,所以找到了以下解决方案:
在第一步应用程序正常工作之后(当然,因为它只是正常的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 {
}
这对我来说更容易。
samples
resources
下创建文件夹(与src/main/java
) 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;
在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
文件,因为它通过fx:controller
引用了Controller
类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.