使用模块时从资源加载文件

时间:2019-01-02 19:32:40

标签: java intellij-idea javafx java-11

我正在尝试从资源目录加载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;
}

我试图像这样在App.java中加载MainWindow.fxml文件: getClass().getResource("/MainWindow.fxml");

我尝试使用MainWindow.fxml/MainWindow.fxml名称,但是都返回null。从目录结构可以看出,资源的内容也被复制,因此它们应该在运行时可用。资源目录在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'
}

0 个答案:

没有答案