Java в Eclipse: куда в файловой системе помещать файлы, которые я хочу загрузить с помощью getResource? (например, изображения для ImageIcon)

Я знаю, что файл должен быть там, где его может найти getClass().getResource(filename), но я не знаю, где это.

Меня интересует как размещение файлов в самой файловой системе, так и то, как использовать функциональные возможности Eclipse для настройки ресурсов.


person Andrew Larned    schedule 06.11.2008    source источник


Ответы (2)


Для Eclipse обычно все, что вам нужно сделать, это настроить папку где-нибудь в каталоге исходного кода. Например, если каталог, содержащий ваш источник, /src, вы можете создать папку /src/resources для размещения ваших изображений/файлов. Затем в своем классе вы делаете getResource("/resources/image.png") для его извлечения.

Вы также можете поместить изображение/файл в ту же папку/пакет, что и класс, пытающийся получить к нему доступ, если хотите (пример: поместите изображение.png в пакет com.mycompany с классом com.mycompany.Foo, который должен получить к нему доступ, и вызовите getResource("image.png")), но я обнаружил, что проще хранить ресурсы, такие как изображения и другие файлы, в их собственном специальном каталоге за пределами папок классов - просто ими проще управлять.

В Eclipse всякий раз, когда вы выполняете сборку, файлы из этого каталога ресурсов будут скопированы в ваш каталог сборки вместе с вашими скомпилированными классами.

Важно отметить, что если в Eclipse включена функция "Автоматическая сборка" (как это делает большинство людей), любые ресурсы в этом каталоге, которые изменяются вне Eclipse (т. е. вы редактируете изображение с помощью инструмента редактирования изображений), среда IDE может не всегда обнаруживать это изменение. Обычно в таких ситуациях обновление папки проекта гарантирует, что файл будет обновлен в сборке.

person BCunningham    schedule 06.11.2008
comment
Я бы добавил, что в случае, если Eclipse неправильно обрабатывает каталог ресурсов, который вы поместили в src/, вам нужно включить его, но не использовать в качестве исходной папки. Вы можете сделать это, вызвав контекстное меню папки (щелчок правой кнопкой мыши) и выбрав Путь сборки -> Удалить из пути сборки, Включить - person charstar; 06.12.2011

Вы можете либо поместить их в папку src рядом с вашими классами, либо создать для этой цели новую исходную папку (обычно называемую resources), хотя вы найдете их точно так же в коде.

Затем вы доберетесь до них, используя getResource("/com/x/y/foo.png").

person jodonnell    schedule 06.11.2008