Fxml mit Maven: "NullPointerException: Location is required"

Maven scheint mit JavaFX und fxml Dateien nicht richtig zu funktionieren. In einem einfach Beispiel mit einer einzigen Java-Klasse und einer .fxml Datei wird die Exception "NullPointerException: Location is required" geworfen:

public class Test extends Application
{
    @Override
    public void start(Stage primaryStage) throws Exception
    {
        Parent root = FXMLLoader.load(getClass().getResource("./test.fxml"));
        primaryStage.setScene(new Scene(root, 200, 200));
        primaryStage.show();
    }
    // ... 
}

Die fxml Datei liegt dabei in dem gleichen Verzeichnis wie die Java-Klasse. Was ist an dem Beispiel falsch, dass es zu der Exception kommt?

Noch keine Stimmen abgegeben
Noch keine Kommentare
  • 15 Feb. 2019

    Das Beispiel funktioniert nicht, weil maven keine Resource-Dateien (wie fxml) aus dem src/main/java Verzeichnis kopiert. Das kann man aber mit dem maven-resource-plugin (https://maven.apache.org/plugins/maven-resources-plugin/) erreichen (wenn man die fxml Dateien dort unbedingt behalten möchte):

    <build>
        ...
        <resources>
            <resource>
                <filtering>false</filtering>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.fxml</include>
                </includes>             
            </resource>
        </resources>
        ...
    </build>
    

    Oder man verwendet dazu einfach das "src/main/resources" Verzeichnis: FXMLLoader.load(getClass().getResource("/ein/pfad/test.fxml"));

    Noch keine Stimmen abgegeben
    Noch keine Kommentare