0

Я попытался найти в Интернете проблему, с которой я столкнулся, но, возможно, я не задаю правильному вопросу Google, поэтому я здесь.Как разрешить конфликт зависимостей для файла Java в IntelliJ IDEA?

Я использую IntelliJ IDEA для своего мультимодульного проекта. Для одного из моих модулей, один из файла класса используют статический импорт -

import static javax.ws.rs.core.Response.Status.Family.familyOf; 

Будучи большим проектом, есть много зависимостей, загруженные из внутреннего репо, но по какой-то причине IntelliJ отказывается использовать зависимость " javax.ws.rs-api-2.0 "вместо этого используется" джерси-ядро-1.8 ". Из-за этого он бросает ошибку компиляции, говоря «Не могу найти символ« familyof ».

Я просмотрел Response.java из обеих зависимостей и обнаружил, что зависимость jersey не имеет метода familyof, а javax.ws.rs-api-2.0 имеет его, но IntelliJ не использует эту зависимость. Как исправить эту проблему. Большинство разработчиков в моей команде используют Eclipse, и у них нет этой проблемы. Я пытаюсь привыкнуть к IntelliJ IDE, но, похоже, это не выход из этого. Любая помощь в этом отношении очень ценится.

PS - Эта проблема не возникает в среде Eclipse IDE.

+1

Вы и ваши товарищи по команде должны использовать maven и POM. В этом случае ваши зависимости будут автоматически управляться для вас, и эта ситуация не возникнет. Если вы используете ide для управления зависимостями, тогда вы должны использовать gui для удаления зависимости javax.ws.rs-api и добавить зависимость от jersey-core. –

+0

Мы используем maven и POM. База кода размещена на внутреннем репозитории github компании, поэтому мне интересно, почему она будет работать для всех остальных, а не для меня. Бьюсь об заклад, я пропустил некоторые настройки intelliJ, которые я не могу понять. Если кто-то использует Eclipse, и они не видят этой проблемы, почему это произойдет, когда я буду использовать IntelliJ? – user139386

ответ

1

я мог бы решить эту проблему, следуя ниже упомянутых шагов -

  1. Goto «Открыть настройки модуля» Command + Стрелка вниз вкладку
  2. Выберите зависимостями
  3. Поиск двух вышеуказанных зависимостей в list
  4. Переместить зависимость "javax.ws.rs-api-2.0", чтобы гарантировать, что эта зависимость выше зависимости от "jersey-core-1.8".

Я не думаю, что это постоянное решение, но оно, похоже, сработало. если у кого-то с глубокими знаниями Java/Mave/IntelliJ есть ответ на этот вопрос, это было бы здорово!

0

Вы можете получить правильный результат каждый раз с помощью Maven путем перетасовки зависимостей в pom.xml и убедиться, что зависимость, которую вы хотите перенять, объявляется сначала в списке зависимостей. да, порядок, в котором объявлены зависимости в pom.xml, имеет значение!

Затем, если вы используете одну и ту же версию Maven, вы должны иметь последовательный результат.