2014-10-23 2 views
0

Просто смотрел Buildpath и Classpath для моего Java проекта в Eclipse. Я заметил, что все банки, включенные в путь сборки проекта, автоматически включаются в его путь к классам.В каком сценарии classpath проекта java будет отличаться от его пути Buildpath?

Имеет смысл, почему Eclipse делает это. Я имею в виду, если мне нужно создать экземпляр внешнего класса в моем коде, тогда мне нужны эти классы по пути buildpath для компиляции кода. И во время выполнения мне нужны те же классы, которые загружаются в jvm.

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

Является ли вышеуказанное понимание точным? Не могли бы вы дать мне сценарий, в котором classpath будет иметь дополнительные классы, чем классы в пути построения?

+1

Предположим, вы зависите от библиотеки A для своего проекта, а A внутренне использует библиотеку B, которая внутренне использует библиотеку C. Вам нужны B и C для создания приложения? Нет. Вам нужно, чтобы они запускали его? Да, поскольку для нужд B и B требуется C. –

ответ

2

Существует множество ситуаций, когда классы необходимы только во время выполнения, а не во время компиляции. Один из самых типичных драйверов JDBC; код написан/скомпилирован по API JDBC, но во время выполнения класс класса должен быть доступен в пути к классам. Существует также множество других примеров, особенно когда вы попадаете в различные структуры, которые имеют стандартный API и отличаются от реализаций, которые могут быть «введены» во время выполнения.

0

Очень распространенный пример - классы, реализующие некоторые API, такие как API сервлета. Каждый контейнер (Tomcat, Jetty, WebSphere) предоставляет классы, о которых веб-приложение обычно ничего не знает, поскольку оно просто использует интерфейсы.

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

Смежные вопросы