Вкладка "Заказ и экспорт" в "Путь сборки Java"
![enter image description here]()
Как использовать вкладку "Заказ и экспорт" в диалоговом окне "Путь сборки Java"?
По названию "заказ" я могу догадаться, что библиотека JRE System выполняется поиск до зависимостей подключаемого модуля, но почему у нас есть "Экспорт" в пути сборки? А что это за кнопка слева от элементов?
ADDED
Это пример, который я заимствовал из Eclipse distilled.
Orderes.webapp зависит от заказов, но он, вероятно, будет использовать классы, определенные в ubl и каталоге.
![enter image description here]()
В таком случае заказы могут экспортировать каталог и ubl, чтобы пакеты, зависящие от него, могли использовать каталог и ubl.
![enter image description here]()
И еще кое-что о "Order and Export".
- Проверка левой кнопки изменяет файл
.classpath
, чтобы добавить exported=true
, например <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.7.jar"/>
.
- src всегда проверяется, и вы не можете снять его.
Ссылки
Ответы
Ответ 1
Эта вкладка, похоже, тянет двойной долг (см. внизу этой справочной страницы для небольшого количества деталей).
С одной стороны, он функционирует как порядок разрешения для ресурсов, используемых при строительстве рассматриваемого проекта (часть "Заказ" ). С другой стороны, это также помогает определить, какие части этого пути построения внесены в зависимые проекты "(те, которые перечисляют этот проект на вкладке" проекты "для просмотра этой панели предпочтений), создают пути (часть" Экспорт ").
Эта последняя функция заключается в том, почему флажки существуют с левой стороны, как вы просите (обратите внимание, что знаки "-" не могут быть сняты, поскольку исходные файлы, определенные в этом проекте, не могут быть отменены, как указано в файле справки). Зависимый проект, который ожидает, что какой-то ресурс из проекта, который будет внесен в проект, не будет компилироваться/выполняться, если входящий проект не экспортирует этот ресурс.
РЕДАКТИРОВАТЬ: см. это сообщение SO для подтверждения.
Ответ 2
очень хороший пример из Coderanch Ilja Preuss
Скажите, что у вас есть junit.jar в пути сборки проекта A. Проект B зависит от проекта A.
Теперь вы пишете тест junit в проекте B. Если проект A экспортирует junit.jar, проект B может использовать его во время компиляции - больше никаких действий необходимо. Если A не экспортирует его, B не знает об этом - вы будете должны явно помещать его в свой путь сборки.
Ответ 3
Order and Export
, как вы правильно догадались, показывает порядок библиотек, которые будут включены в ваш путь построения проекта.
Используя кнопки up
и down
, вы можете настроить порядок своих библиотек в соответствии с вашими проектами.
Ответ 4
Чтобы ответить на ваш конкретный вопрос, если этот проект должен быть добавлен как зависимость для другого Java-проекта, заказ будет использоваться для разрешения классов и пакетов в этом проекте при запуске другого проекта. Говорят, что эти классы и пакеты экспортируются в/для другого запускаемого класса проекта.
Ответ 5
Есть один случай, когда я нашел это полезным. Я должен был использовать солнце. * Класс банки IBM. Этот класс также присутствовал в местном jre, но мое требование состояло в том, чтобы использовать класс IBM. Но по умолчанию компилятор будет ссылаться только на локальный класс jdk.
На вкладке "Затмение" и "Экспорт" я переместил внешнюю банку перед JRE lib. Теперь компилятор будет ссылаться на класс из jar IBM вместо локальной JRE.