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

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

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

Ответы [ 2 ]

62 голосов
/ 07 ноября 2008

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

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

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

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

7 голосов
/ 06 ноября 2008

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

Тогда вы получите их используя getResource("/com/x/y/foo.png").

...