LINUX.ORG.RU

Работа с ресурсами в Java

 ,


0

2

Привет всем! В Java можно получить ресурс несколькими способами:

  • getClass().getResource(name)
  • TestClass.class.getClassLoader().getResource(name)

В первом способе я знаю, что есть абсолютные и относительные пути. При абсолютном мы ресурс будем искать в classpath/resource_name, а при относительном добавиться еще пакет classpath/our_package/resource_name.

Во втором же случае мы ресурс будем искать в classpath без указания /.

Так вот, пара вопросов:

  • Почему во втором случае нет понятия абсолютный или относительный путь?
  • В первом случае мы используем класслоадер объекта, во втором - класса, так?
  • При этом когда я смотрю в то, что во что собрался проект - я вижу, что относительные ресурсы кладутся в пакет, абсолютные - в корень. Как такое получается?
  • Где можно понятно про это прочесть?
  • Как вы работаете с ресурсами в своих проектах?

Спасибо за помощь!

в исходниках метода getResource? :)

stevejobs ★★★★☆ ()

В первом случае мы используем класслоадер объекта, во втором - класса, так?

а унутре:

getClass().getResource(

ты заглядывал? Рекомендую.

Deleted ()

Я смотрел, но не понимаю, как у меня ресурс попадает в определенные места.

Например, я запускаю код с помощью idea - у меня генерится target, в котором уже лежат ресурсы мои, как они попадают туда? При этом именно так, что относительные - в classpath и пакеты, абсолютные в корне classes.

К тому же, я еще бы хотел, чтобы кто-нибудь своими словами сказал как это все происходит, может я что-то упускаю.

aarexer ()

Почему во втором случае нет понятия абсолютный или относительный путь?

Потому, что во втором случае нет класса, относительно которого можно было бы найти абсолютный путь.

В первом случае мы используем класслоадер объекта, во втором - класса, так?

Нет понятия класслоадер объекта. Есть понятие класслоадер класса. Первый вариант можно написать как TestClass.class.getResource(name), получится то же самое (если не наследоваться).

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

Не понял вопрос.

Где можно понятно про это прочесть?

Начни с JavaDoc, исходников стандартной библиотеки.

Legioner ★★★★★ ()
Ответ на: комментарий от aarexer

Я смотрел, но не понимаю, как у меня ресурс попадает в определенные места.

Твоя система сборки копирует его. В твоём случае вероятно система сборки, встроенная в Idea.

Например, я запускаю код с помощью idea - у меня генерится target, в котором уже лежат ресурсы мои, как они попадают туда? При этом именно так, что относительные - в classpath и пакеты, абсолютные в корне classes.

Нет такого понятия «относительный ресурс» или «абсолютный ресурс». Все ресурсы одинаковые.

Legioner ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.