这是我的项目结构:
java - GetResource方法在Java 11中不起作用-LMLPHP

这是我的模块信息:

open module org.client.main {
    exports org.apj.client.app;
    requires javafx.controls;
    requires javafx.base;
    requires javafx.fxml;
    requires spring.context;
    requires spring.web;
    requires java.sql;
    requires spring.beans;
    requires spring.core;
}


这是我的父gradle构建文件:

subprojects {
    afterEvaluate {
        repositories {
            jcenter()
        }

        compileJava {
            doFirst {
                options.compilerArgs = [
                        '--module-path', classpath.asPath,
                ]
                classpath = files()
            }
        }

        compileTestJava {
            inputs.property("moduleName", moduleName)
            doFirst {
                options.compilerArgs = [
                        '--module-path', classpath.asPath,
                        '--add-modules', 'junit',
                        '--add-reads', "$moduleName=junit",
                        '--patch-module', "$moduleName=" + files(sourceSets.test.java.srcDirs).asPath,
                ]
                classpath = files()
            }
        }

        test {
            inputs.property("moduleName", moduleName)
            doFirst {
                jvmArgs = [
                        '--module-path', classpath.asPath,
                        '--add-modules', 'ALL-MODULE-PATH',
                        '--add-reads', "$moduleName=junit",
                        '--patch-module', "$moduleName=" + files(sourceSets.test.java.outputDir).asPath,
                ]
                classpath = files()
            }
        }
    }
}


这是我的客户端模块构建文件:

plugins {
    id 'java'
}

group 'APJ'
version '1.0-SNAPSHOT'

sourceCompatibility = 11

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.springframework', name: 'spring-webmvc', version: '5.1.4.RELEASE'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

ext.moduleName = 'org.client.main'


我正在尝试为FXMLLoader获取getResource,但是我根本无法使其正常工作。我已经挣扎了两个小时,现在我真的很绝望。我尝试过像文件名的每个可能组合,每个可能的位置,但仍然返回null。

我也尝试过ClassLoader.getSystemClassLoader().getResource("/login.fxml")
getClass().getResource("/login.fxml")
但这也不起作用。

有人可以帮我弄这个吗 ?我会很感激。

最佳答案

我注意到Java 11有2个使getResource工作的选项:


使用插件'org.openjfx.javafxplugin' version '0.0.7'
在上面的Slaw提供的链接中使用'--patch-module':Where do resource files go in a Gradle project that builds a Java 9 module?

run {
doFirst {
    jvmArgs = [
            '--module-path', classpath.asPath,
            '--patch-module', "$moduleName=" + files(sourceSets.main.output.resourcesDir).asPath,
            '--module', mainClassName
    ]
}
}

关于java - GetResource方法在Java 11中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54317046/

10-11 21:19