2016-05-28 9 views
1

Я добавил Lombok 1.12 jar-файл в pathpath, в то время как я дал Lombok 1.16 jar-файл в библиотеках (при настройке пути построения в eclipse). Eclipse не смог распознать некоторые аннотации ломбока как @Builder (давал ошибку компилятора). (Также @Builder был включен в основной пакет Lombok в версии 1.12)Различные файлы jar в пути к классам и путь построения в Eclipse

Позже я скорректированного дал Lombok 1.16 банку файл в путь к классам также. @Builder аннотация становится признанной на этот раз затмением. Сейчас все работает хорошо.

Это означает, что путь к классам в vm сравнивается с контуром сборки, и выполняется проверка, является ли бинарный файл (lombok.jar) одинаковым для пути к классам и пути сборки как. Правильно ли мое утверждение? Плс исправить меня, если я неправильно интерпретирую это.

+0

В eclipse баннер, установленный как агент, используется для генерации кода. В банке в вашем проекте используются аннотации, доступные в вашем проекте. Агент использует другой путь к классам. –

+0

@RoelSpilker Посредством генерации кода вы имеете в виду, что jvm хранит инструкции, установленные в одном месте для конкретной аннотации lombok, чтобы компилятор мог отбирать оттуда? – Ashley

+0

Это правильно. –

ответ

1

путь построения - это своего рода надмножество пути класса, он содержит путь класса, путь исходного кода и все ресурсы, зависящие от проекта. Если у вас есть две разные версии jars, JVM загрузит класс из jar, который будет первым в пути сборки. Это может управляться путем редактирования (build path-> configure build path-> order of export). Если требуемый класс недоступен в первой версии, он будет проверять флажок в 2-й версии. Если он не находит его вообще, то ошибка компиляции будет выброшена

+0

Спасибо за ответ. Можете ли вы предоставить мне ссылку на объяснение, которое вы дали, чтобы я мог быть уверен? – Ashley

+0

http://stackoverflow.com/questions/3529459/what-is-the-difference-between-class-path-and-build-path –

+0

http://stackoverflow.com/questions/6105124/java-classpath-classloading -multiple-versions-of-the-same-jar-project –

0

в eclipse, если оба jar находятся в пути сборки, закажите их тот, который вы хотите передать, придает ему приоритет, делая его наверху. Настройте последнюю вкладку пути или вы можете делить нижнюю версию, которую вы не хотите ссылаться.

+0

Я не даю две разные версии в пути построения. Я дал другую версию jars для пути buildpath и classpath. Eclipse показывает мне ошибку компилятора. Хотя путь сборки содержит только правильную версию. Это classpath, который содержит неправильную версию. @smruti ответ не идет с моим вопросом. Как jvm разрешает этот конфликт? – Ashley

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

  • Нет связанных вопросов^_^