Как работает сборка путей к классам Java? - PullRequest
0 голосов
/ 22 ноября 2011

Я всегда считал classpath само собой разумеющимся, то есть - это то, что затмение, maven, ant и т. Д. Обрабатывали для меня.Очевидно, что путь к классам - это место, где Java «ищет» двоичные классы, которые выполняются / интегрируются с приложением.

Тем не менее, есть некоторые сложности, которые четко не описаны.

1) Как Java "находит" классы в classpath?

2) Как javac обрабатывает столкновения при просмотре пути к классам?

3) Что происходит "под капотом", когда такие инструменты, как maven / ant добавляют / игнорируют элементы в classpath?Эти инструменты просто оборачивают программу javac?

4) Наконец: есть ли пример "сложной" сложной сборки для java, которая не использует современное поколение инструментов сборки - только для образовательных целей - что доступно?

Ответы [ 2 ]

1 голос
/ 22 ноября 2011
  1. Местоположение класса является просто иерархическим по полному имени. Получение потока байтов зависит от резервного хранилища, находится ли оно в файловой системе (просто читает файл), в jar (читает запись zip), в БД (получает байты). Загрузчик классов должен преобразовать FQN в поток байтов.

  2. зависит от реализации. Обычно побеждает первый в классе, но это не является обязательным требованием, просто самое простое.

  3. Больше или меньше.

  4. Вы имеете в виду, как старый Makefile на основе? Или большой старый муравей? Не уверен, что вы спрашиваете. В основном это создание путей к классам, что легко, и создание артефактов.

0 голосов
/ 22 ноября 2011

man javac и man java ответят на большинство ваших вопросов.

3) Они просто обертывают его

...