Вы можете запросить путь в следующем формате:
/package/path/to/the/resource.ext
Даже байты для создания классов в памяти находятся следующим образом:
my.Class -> /my/Class.class
и getResource
предоставят вам URL, который можно использовать для получения InputStream
.
Но ... Я бы рекомендовал использовать getClass().getResourceAsStream(...)
напрямую с тем же аргументом, потому что он возвращает напрямую InputStream и не нужно беспокоиться о создании (возможно, сложного) объекта URL, который должен знать, как создать InputStream.
Вкратце: попробуйте использовать getResourceAsStream
и какой-нибудь конструктор ImageIcon
, который использует InputStream
в качестве аргумента.
1020 * загрузчиков классов *
Будьте осторожны, если в вашем приложении много загрузчиков классов. Если у вас есть простое автономное приложение (без серверов или сложных вещей), вам не о чем беспокоиться. Я не думаю, что это тот случай, если ImageIcon
смог его найти.
Редактировать: classpath
getResource
- как говорит mattb - для загрузки ресурсов из classpath (из вашего каталога .jar или classpath). Если вы связываете приложение, то его приятно иметь вместе, поэтому вы можете включить файл значков в банку вашего приложения и получить его таким образом.