Является ли это недостатком плагина org.gradle.java.experimental-jigsaw или самого Gradle, я не уверен.
дал небольшой (привет мир стиль) проект Java 9, используя Gradle иплагин головоломки.
Для теста junit я попытался получить доступ к какому-либо файлу в качестве ресурса, ноclassLoader.getResource(filename)
не может найти файл
Обычно вы кладете файл какsrc/test/resources/foo.txt
и получить к нему доступ как/foo.txt
, но с Java 9 похоже, что все изменилось и ресурсы (похожи, как классы)заключены в модули.
Где именно я должен поместить файл ресурсов для gradle, чтобы правильно его упаковать?
Как правильно получить доступ к этому файлу впоследствии в тесте?
Какую документацию я забыл прочитать? :)
Чтобы быть более точным, я создал небольшойтестовый проект, использованиеgit clone https://github.com/michas2/java_9_resource_test.git
и сделатьgradle build
впоследствии после перехода в этот каталог. (Я использую Gradle 4.6, но это не должно быть проблемой.)
Структура выглядит так:
.
├── build.gradle
└── src
├── main
│ └── java
│ ├── module-info.java
│ └── resourceTest
│ └── Main.java
└── test
├── java
│ └── resourceTest
│ └── MainTest.java
└── resources
└── resourceTest
└── test.txt
Я пытаюсь получить доступ к ресурсу, используяthis.getClass().getResource("/resourceTest/test.txt")
что, к сожалению, даетnull
взамен