2014-11-10 3 views
0

У меня есть проект maven java в среде Eclipse IDE, и ему нужно общаться с компонентами на веб-сервере. Когда я впервые закодировал это, он работал без импорта слишком большого количества банок. Однако мне нужно было сделать мой проект частью более крупной сборки, и теперь мои требования к иждивенцам вышли из-под контроля. Я все еще немного новичок в maven и как он интегрируется с eclipse, но я обнаружил, что большинство моих ClassNotFoundExceptions указывает на классы, которые существуют, но с небольшими отклонениями в пути. См. Изображение ниже.Как я могу найти основную причину моего бесконечного адвентизма адма?

enter image description here

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

Просто посмотрите на изображение: У меня есть com.sun.xml. внутренних .bind.marshaller.SAX2DOMEx.class, но не com.sun.xml.bind.marshaller.SAX2DOMEx.class

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

+0

Привет @KjetilNordin, мой ответ ниже решил вашу проблему? – 333kenshin

+0

Собственно, это было так. Благодаря! – KjetilNordin

ответ

2

@KjetilNordin,

Вы писали:

I've found that most of my ClassNotFoundExceptions points to classes that do exist, but with slight variances in path 

Это говорит о том, что где-то по пути, один или несколько банок вы зависят от того, имеет 2 противоречащих друг другу версий, между которыми класс перемещаемых между различными пакеты. Механизм разрешения зависимостей Maven разрешает банку версию, в которой класс находится в другом пакете, где вы ожидаете.

Запустите mvn dependency:tree в вашем проекте, чтобы просмотреть всю иерархию транзитивных зависимостей, чтобы вы могли отслеживать, что от этого зависит. Вероятно, вы увидите, что ваша банка появилась в нескольких местах, и, по-видимому, неправильная версия получает приоритет с точки зрения разрешения версии Maven.

Далее решите, с какой версией вы хотите пойти.

Наконец, добавьте блок <dependencyManagement> в ваш файл pom.xml, чтобы версия соответствовала вашей желаемой версии.

Надеюсь, что это поможет.

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