Не удается получить ресурс при запуске / отладке в IntelliJ IDEA

Я заметил, что не могу получить ресурс при запуске / отладке модульного приложения Java 11 в IntelliJ, но когда я использую задачу Gradle run, она работает нормально.

LoadResource.java

package com.example;

public class LoadResource {
    public static void main(String ... args) {
        new LoadResource().run();
    }

    private void run() {
        System.out.println("TEST");

        final var resource = getClass().getResource("Foo.txt");
        System.out.println(resource.toExternalForm());
    }
}

module-info.java

module LoadResource {
    exports com.example;
}

build.gradle

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

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

repositories {
    mavenCentral()
}

mainClassName = 'LoadResource/com.example.LoadResource'

ОБНОВЛЕНИЕ: добавление

run {
    doFirst {
        println commandLine
    }
}

показывает, что Gradle явно выполняет [C:\Program...\bin\java.exe, -Dfile.encoding=windows-1252, -Duser.country=US, -Duser.language=en, -Duser.variant, -cp, D:\xxx\load-resource\build\classes\java\main;D:\xxx\load-resource\build\resources\main, null].

Вы можете найти мой образец проекта здесь.


person Hannes    schedule 06.12.2018    source источник
comment
@nullpointer Прежде всего: я ничего не жду от людей. Во-вторых, в прошлый раз, когда у меня был вопрос о проблеме, связанной с IntelliJ, меня попросили предоставить образец проекта (и это то, что я ожидал бы взамен, если бы мне пришлось ответить на такой вопрос). Наконец, я считаю, что подробно объяснил свою проблему и предоставил файл только в качестве дополнительной информации. Но в любом случае спасибо за ваше время :-)   -  person Hannes    schedule 06.12.2018
comment
@nullpointer Я не уверен, что какая-либо из этих статей ответит на мой вопрос. Первая проблема звучит очень похоже, но затем они говорят о том, как заставить ее работать в Gradle, но это не моя проблема. Моя проблема в том, что он не работает, если я запускаю его в IDEA, но я могу ошибаться.   -  person Hannes    schedule 06.12.2018
comment
Единственная возможная разница может заключаться в том, как gradle выполняет ваш модуль против того, как IntelliJ. В этом случае не могли бы вы обновить вопрос с помощью эффективной команды java для обоих случаев. Я совершенно уверен, что это будет исполнение модуля с именем и без имени. Повторно открыл бы вопрос, если ничего из этого не соответствует объяснению из существующей ссылки.   -  person Naman    schedule 06.12.2018
comment
@nullpointer Я добавил то, что я считаю настоящей командой командной строки Gradle.   -  person Hannes    schedule 06.12.2018
comment
Если бы я мог прочитать это правильно. -cp, D:\xxx\load-resource\build\classes\java\main возможно, означает, что ваш модуль загружен как безымянный модуль.   -  person Naman    schedule 06.12.2018
comment
Итак, моя актуальная проблема: как загрузить ресурсы из именованного модуля?   -  person Hannes    schedule 06.12.2018
comment
@Hannes Первая ссылка, размещенная в качестве существующих ответов на ваш вопрос, действительно дает вам точное решение вашей проблемы. Попробуйте запустить задачу gradle с --info, и вы увидите используемые параметры. Подсказка: посмотрите, что за плагин работает с папкой ресурсов. Вам нужно будет добавить то же самое к параметрам виртуальной машины в вашей конфигурации запуска / отладки.   -  person José Pereda    schedule 06.12.2018
comment
@ JoséPereda И это странная вещь, я уже пробовал это и добавил в качестве аргументов виртуальной машины в IntelliJ --patch-module LoadResource=D:\WINDOWS\IdeaProject\load-resource\out\production\resources --module LoadResource/com.example.LoadResource, но с этим я получаю java.lang.module.FindException: Module LoadResource not found, и поэтому мне интересно, делаю ли я здесь что-то совершенно не так. (плюс: я ожидал, что дорогая IDE сделает это за меня автоматически.)   -  person Hannes    schedule 06.12.2018
comment
Я только что добавил это: --patch-module LoadResource=build/resources/main, и у меня это работает. Модуль добавлять не нужно, он будет добавлен. В аргументах есть порядок, которому нужно следовать.   -  person José Pereda    schedule 06.12.2018
comment
@ JoséPereda Ой ... У меня тоже ЭТО сработало! Кстати: я пишу в статье о моей боли при переходе с JDK 8 на JDK 11, так что, возможно, кто-то еще сможет извлечь выгоду из всей информации, которую я получил во время путешествия :-) Еще раз спасибо за вашу столь ценную помощь!   -  person Hannes    schedule 06.12.2018
comment
@ Ханнес, не могли бы вы дать ссылку на свою статью?   -  person elect    schedule 26.11.2019