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

Java 使用模块时从资源加载文件,java,gradle,intellij-idea,javafx,java-11,Java,Gradle,Intellij Idea,Javafx,Java 11,我试图从resources目录加载一个FXML文件来显示一个JavaFX窗口,但是无论我做什么,我都找不到引用资源的正确方法 我的目录结构如下: src main java gui App.java module-info.java resources MainWindow.fxml out production classes

我试图从resources目录加载一个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'
}

可能:
App.class.getResource(“../resources/MainWindow.fxml”)?我已经尝试过“./resources/MainWindow.fxml”、“/resources/MainWindow.fxml”、“resources/MainWindow.fxml”,它们都不返回资源。对于初学者,您应该将项目打开到fxml模块,如图所示。您正在使用JavaFX吗?你能显示你的build.gradle文件吗?@JoséPereda我已经添加了build.gradle文件。我还添加了opens语句,但我认为这可能是另一个问题,因为在执行任何相关的JavaFX之前无法加载该文件。您不需要
实现
部分,插件会为您这样做。另外,您不需要添加
javafx.graphics
,它是通过控件添加的。至于你的问题,你有例外吗?你能把stacktrace贴出来吗?您是否尝试运行我之前链接的示例,它对您有效吗?