Я заметил, что не могу получить ресурс при запуске / отладке модульного приложения 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]
.
Вы можете найти мой образец проекта здесь.
gradle
выполняет ваш модуль против того, какIntelliJ
. В этом случае не могли бы вы обновить вопрос с помощью эффективной команды java для обоих случаев. Я совершенно уверен, что это будет исполнение модуля с именем и без имени. Повторно открыл бы вопрос, если ничего из этого не соответствует объяснению из существующей ссылки. - person Naman   schedule 06.12.2018-cp, D:\xxx\load-resource\build\classes\java\main
возможно, означает, что ваш модуль загружен как безымянный модуль. - person Naman   schedule 06.12.2018--info
, и вы увидите используемые параметры. Подсказка: посмотрите, что за плагин работает с папкой ресурсов. Вам нужно будет добавить то же самое к параметрам виртуальной машины в вашей конфигурации запуска / отладки. - person José Pereda   schedule 06.12.2018--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--patch-module LoadResource=build/resources/main
, и у меня это работает. Модуль добавлять не нужно, он будет добавлен. В аргументах есть порядок, которому нужно следовать. - person José Pereda   schedule 06.12.2018