2013-11-08 2 views
0

Я строй проект для класса, который я принимаю, и он состоит из 4-х модулейNoClassDefFoundException в N-уровневого приложении

-impl (business logic/dao access) 
-ejb (encapsulates business logic and provides access to it via a remote interface) 
-war (web tier) 
-ear (contains the war and ejb modules) 

класса Одна утилиты, которая у меня есть внутри осущий способен населён H2 база данных. Он делает это, запустив ingestor, который считывает в процессах файл XML, который находится в хранилище Maven, используя различные даосские классы/методы глотают данные:

String fileName = "xml/proj-data.xml"; 
     InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName); 

Когда я бегу ingestor через модульное тестирование, она работает нормально, но когда у меня есть все, многослойное, я получаю NoClassDefFoundException на XML/Proj-data.xml

Так основная схема, что у меня есть:

-the war has dependencies on the impl and ejb modules 
-the ejb has dependency on the impl module 
-the ear has dependency on the impl, ejb, and war 

Это проект Maven. Когда я развертываю EAR на сервере, отображается начальная страница войны (как я ожидаю).

-На странице html есть кнопка, которая при нажатии, делает сообщение на сервлет -Серпеть вводит в него ejb, который он вызывает (через свой удаленный интерфейс). -Ejb-метод выполняет обратный вызов метода заполнения в имплатете, и thats, когда происходит исключение, и я возвращаю веб-страницу с указанием исключения.

Должен ли я также объявить этот репозиторий в файле WAR WAR?

+0

'xml-файл, который находится в репозитории maven,' Ваш код не похож на чтение из репозитория Maven. –

+0

xml-файл не находится на моей локальной машине, он считывается из пути к классам. Входной поток передается в качестве аргумента для моего ingestor. – user1154644

ответ

0

При наборе вопроса, я думаю, я знаю, в чем проблема. Репозиторий, в котором находится xml-файл, объявляется в корневом pom для проекта (родительский объект impl), а не pom для модуля impl. Поскольку impl является модулем, который упаковывается вместе с EAR, мне может потребоваться также объявить репозиторий в файле pimp impl.

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