在我的JavaFX程序中添加了Maven
个依赖项并创建了一个新的程序包(称为算法和两个类)之后,我的应用程序无法启动。
引发以下异常:
由于: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文件也不起作用
答案 0 :(得分:2)
我刚刚大致复制了此代码,并将其放在我的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运行。作品。创建一个用java -jar运行的Jar,也可以。
答案 1 :(得分:0)
您的IDE(IntelliJ)使用模式识别从类路径加载资源文件以匹配文件扩展名。默认情况下,IntelliJ包括JPG,PNG,HTML等扩展名
这意味着您需要为FXML手动指定要编译器查找的文件扩展名。
以下是一些有关如何实现此目标的简单说明: https://www.jetbrains.com/help/idea/working-with-projects.html