Загрузка файла из ресурсов при использовании модулей - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь загрузить файл FXML из каталога ресурсов для отображения окна JavaFX, однако, что бы я ни делал, я не могу найти правильный способ ссылки на ресурс.

Моя структура каталогов выглядит следующим образом:

src
    main
        java
            gui
                App.java
            module-info.java
        resources
            MainWindow.fxml
out
    production
        classes
            // All compiled classes
        resources
            MainWindow.fxml

Содержимое module-info.java следующее:

module MyApp {
    requires javafx.controls;
    requires javafx.graphics;
    requires javafx.fxml;
    exports gui;
}

Я пытаюсь загрузить файл MainWindow.fxml в App.java следующим образом: getClass().getResource("/MainWindow.fxml");

Я пытался использовать имена MainWindow.fxml и /MainWindow.fxml, однако оба возвращают ноль. Как видно из структуры каталогов, содержимое ресурсов также копируется, поэтому они должны быть доступны во время выполнения. Каталог ресурсов помечен как таковой в IntelliJ. Я использую Gradle для управления зависимостями.

Как загрузить файлы из каталога ресурсов?

Вот мой файл build.gradle:

plugins {
    id 'application'
    id 'java'
    id 'org.openjfx.javafxplugin' version '0.0.5'
}

group 'MyApp'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.11

javafx {
    modules = [
            'javafx.controls',
            'javafx.graphics',
            'javafx.fxml'
    ]
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation group: 'junit', name: 'junit', version: '4.12'

    implementation 'org.openjfx.javafx-controls:11.0.1'
    implementation 'org.openjfx.javafx-fxml:11.0.1'
    implementation 'org.openjfx.javafx-graphics:11.0.1'
}
...