Fxml mit Maven: "NullPointerException: Location is required"

2019 Feb 15 (00:20)

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?

matthias 2019 Feb 15 (00:49)

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"));

0 0 0
Noch keine Stimmen abgegeben
Durch die Nutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Außerdem werden teilweise auch Cookies von Diensten Dritter gesetzt. Genauere Informationen finden Sie in unserer Datenschutzerklärung sowie im Impressum.