Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Затем вы получите их с помощью getResource("/com/x/y/foo.png").