Доступ к ресурсам gradle из Java

У меня есть проект java с gradle с этой структурой

.
├── myproject
│      ├── src
│      |    └── main
│      |         ├── java
│      |         └── resources
│      |               └── myresource.xml
|      ├── build
|      |     ├── classes
|      |     |    └── main
│      |     |         └── myresource.xml
|      |     ├── resources

Я пытаюсь получить доступ к некоторым файлам в папке ресурсов с помощью ClassLoader, например

ClassLoader.getSystemClassLoader().getResoure("/myresource.xml");

но он не находит файл.

Единственный способ найти эти файлы - изучить известную структуру проекта

Path resourcesPath= FileSystems.getDefault().getPath(System.getProperty("user.dir"), "/src/main/resources/");

Любая идея о том, что я делаю неправильно?

Ответ 1

Ну, похоже, мои трудности возникли из-за другой проблемы (ресурсы не копируются в нужные места). Как только я решил эту проблему, ClassLoader смог найти мои ресурсы, используя любую из этих двух форм:

ClassLoader.getSystemClassLoader().getResource("./myresource.xml");

ClassLoader.getSystemClassLoader().getResource("myresource.xml");

Изменить: При использовании jar, встроенного в другие приложения, прежнее решение не работает, используйте его в этом случае:

Thread.currentThread().getContextClassLoader().getResource("myresource.xml")

Ответ 3

Может быть, вы должны использовать это так:


Thread.currentThread().getContextClassLoader().getResource("myresource.xml")

Если я использую ClassLoader.getSystemClassLoader().getResource("myresource.xml")

Когда я использую его как пакет jar, встроенный в другие приложения, у меня все равно нет доступа к ресурсам.