Как мне получить доступ к файлам ресурсов в Java (Intellij)? - PullRequest
2 голосов
/ 02 апреля 2020

Кажется, я не могу получить доступ к файлам ресурсов, когда отмеченная ресурсами папка 'resources' не находится внутри отмеченной источником папки java.

Вот мой проект структура (которая следует структуре Maven, но мне все еще нравится):

|src 
|-main
|--java (marked as sources folder)
|--|projectname
|--|-main.java
|--|-Class2.java
|--|- ..
|--|-Classx.java
|--resources (marked as resources folder)
|--|config.properties
|--|images

так выглядит в IntelliJ

Я применил все возможные изменения к В следующей строке я все еще не могу загрузить файл config.properties или любой другой файл из папки ресурсов.

getClass().getResource("config.properties");

, которая вызывается в основном классе. Это должно работать правильно? Почему это не так?

Как мне получить доступ к ресурсу с этой структурой проекта?

С большой любовью, Jiefu

edit 1: после того же тестирования, кажется, из-за того, что каталоги находятся между отмеченной исходной папкой и содержимым root (который здесь является родителем sr c), я пока не знаю, почему это так и как обойти это ...

Решено: получается, удаляя выходную папку и перезапуская IntelliJ исправляет ее. Я должен был сделать это дважды, хотя ... Странно.

Я обдумывал это в течение двух дней, и вот что это было ^. ^

1 Ответ

1 голос
/ 02 апреля 2020

Ваш класс находится в пакете projectname, поэтому код ищет файл ресурса projectname/config.properties, но его там нет.

Чтобы найти файл ресурса config.properties, используйте:

getClass().getResource("/config.properties");

как задокументировано в javado c из getResource().

И помните, что ресурс не может быть файлом на файловая система, поэтому не используйте, например, File для доступа к ней. Чтобы прочитать содержимое ресурса, используйте getResourceAsStream().

...