2012-02-29 5 views
0

У меня возникла странная проблема с JAXB в моем мультимодульном проекте maven. Один из моих компонентов создает XML BPMN 2.0 с использованием JAXB. Не создавать классы самих, а использовалJAXB in maven multi module

<dependency> 
    <groupId>org.ow2.orchestra.designer</groupId> 
    <artifactId>bpmn-jaxb-model</artifactId> 
    <version>4.9.0</version> 
    <scope>compile</scope> 
</dependency> 

тестов в этом модуле все прекрасно работает, и я могу видеть созданный файл XML и его содержание.

Второй модуль представляет прототип WebFrontend. Он имеет первый компонент как зависимость и использует его.

Если я затем вызвать метод, который создает BPMN 2.0 XML из WebFrontend, я получаю JAXBException, как показано ниже:

javax.xml.bind.JAXBException: "org.ow2.orchestra.jaxb.bpmn" doesnt contain ObjectFactory.class or jaxb.index 
    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:186) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    ... 

Как это может быть, что JAXB отлично работает в одном модуле Maven, но а не когда этот модуль используется где-то еще?

Может ли кто-нибудь дать мне указатели?

EDIT: Когда я смотрю на зависимости в Netbeans, я отчетливо вижу ObjectFactory.class в правильном пакете в правой банке ... Возможно, это какая-то причудливая проблема Jetty?

+0

Похоже, что в веб-приложении отсутствует зависимость. Попробуйте 'mvn dependency: tree ', возможно, это прольет некоторый свет. – lexicore

ответ

0

Эти проблемы обычно заканчиваются конфликтами версий ... выполняют зависимость mvn: дерево на каждом модуле и сравнивают зависимости.

Если вы не видите никаких расхождений, загружайте модули по одному в Eclipse, делайте cntrl-shit-t и введите имя класса. Можете ли вы загрузить один и тот же класс из разных банок? как насчет того, открыты ли все модули?

+0

Зависимости равны в обоих модулях. Я в том, что, возможно, что-то не попадает в JAR в момент его упаковки ... – DodoFXP

0

У меня проблема решена. Я объявила зависимость как «предоставлена» в первом модуле и добавила ее в зависимости от причала в pom.xml WebApp. Мне это не очень нравится, но поскольку у меня заканчивается время, это лучшее решение, которое я могу сейчас получить.

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