1. ホーム
  2. java

[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。

2022-02-25 15:17:56

質問

JavaFXのプログラムを実行しようとしているのですが、なかなかうまくいきません。java.lang.NullPointerException.NullPointerException "というエラーが出続けています。場所が必要です'。fxmlファイルは、Applicationクラスと同じパッケージに入っています。以下は、私の非常に簡単なコードです。

package com.kromalights.designer.entry;

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("main.fxml"));
        primaryStage.setTitle("Kromalights Designer");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


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

そして、これが私のmain.fxmlファイルのコピーです。

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<?scenebuilder-stylesheet mailStyles.css?>
<?import java.net.*?>

<BorderPane prefHeight="300.0" prefWidth="300.0" xmlns:fx="http://javafx.com/fxml/1"
        xmlns="http://javafx.com/javafx/2.2"
        fx:controller="com.kromalights.designer.entry.Controller">
    <bottom>
        <Pane prefHeight="200.0" prefWidth="200.0"/>
    </bottom>
    <center>
        <Pane prefHeight="200.0" prefWidth="200.0"/>
    </center>
    <left>
        <VBox prefHeight="200.0" prefWidth="100.0"/>
    </left>
    <top>
        <HBox prefHeight="100.0" prefWidth="200.0"/>
    </top>
    <stylesheets>
        <URL value="@mainStyles.css" />
    </stylesheets>
</BorderPane>

コントローラクラスは存在し、fxmlファイルで指定されたパッケージの中に入っています。私の名前はすべて正しく、あるべき場所にあります。何が足りないのでしょうか?名前の問題である可能性を考え、fxmlファイルの名前を変えてみました。助けてください。参考までに、私はOSX上でIntellij IDEAを使用しています。

UPDATE: これはMavenの問題です。このプロジェクトにMavenをセットアップしたため、この問題が発生しました。Mavenを一時的に削除して、Mavenなしで作業を継続できるようにしました。Mavenを使用しているときに、この問題をどのように扱うのがベストなのか、どなたかお分かりになりますか?

解決方法は?

main/resourcesディレクトリにファイルを移動させるとうまくいきました。