无法启动javaFX项目中的应用程序

时间:2019-04-11 13:21:50

标签: java javafx

在我的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文件也不起作用

IMage

2 个答案:

答案 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