FXMLLoader.load java.lang.RuntimeException: Gradle

nieselfriem

Bekanntes Mitglied
Hallo,

ich habe mir ein Gradle-Project für Java-FX erstellt. FX läuft aber ich habe meine Probleme wenn ich die mein FXML File laden möchte.

Dann bekomme ich eine
Code:
[Caused by: java.lang.NullPointerException: Location is required

selbst wenn ich den absoluten Pfad angebe

Java:
Parent root = FXMLLoader.load(getClass().getResource("/home/georg/IdeaProjects/testproject/src/main/java/ui/MainWindow.fxml"));

Die build.gradle sieht wie folgt aus:

Java:
plugins {
    id 'java'
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.9'
}

group 'org.example'
version '1.0-SNAPSHOT'

mainClassName='AbuMain'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}

test {
    useJUnitPlatform()
}

javafx {
    version = "15.0.1"
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}

ich verwende IntelliJ als IDE

Was mache ich da falsch?

VG Georg
 
getResource erwartet keinen absoluten Pfad, sondern die Angabe des packages, in dem die Datei liegt. Bei deinem Pfad dürfte das alles unterhalb von java sein, also /ui/MainWindow.fxml.

Außerdem solltest du die Dateien auch in src/main/resources, und nicht in src/main/java ablegen, gradle macht da afaik einen Unterschied.


Statt getClass solltest du generell auch besser eine statische Klasse angeben, also sowas wie MeineKlasse.class.
 

Zurück
Oben