2012-02-15 4 views
0

Я получаю «java.lang.NoClassDefFoundError: br/com/company/comom/entity/api/MyEntity» при развертывании моего .ear. Этот «MyEntity» находится в модуле «ejb-commo» n и является интерфейсом, который реализует объекты JPA. Модуль «ejb-testapp» имеет некоторые сущности JPA, которые реализуют «MyEntity».NoClassDefFoundError с загрузчиком классов EJB

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-ear-plugin</artifactId> 
    <configuration> 
     <version>6</version> 
     <generateApplicationXml>true</generateApplicationXml> 
     <defaultJavaBundleDir>lib/</defaultJavaBundleDir> 
     <modules>       
      <ejbModule> 
       <groupId>br.com.company</groupId> 
       <artifactId>ejb-common</artifactId> 
      </ejbModule>           
      <ejbModule> 
       <groupId>br.com.company</groupId> 
       <artifactId>ejb-testapp</artifactId> 
      </ejbModule> 
      <webModule> 
       <groupId>br.com.company</groupId> 
       <artifactId>web-testapp</artifactId> 
       <contextRoot>/desktop</contextRoot> 
      </webModule>  
     </modules> 
     </configuration> 
    </plugin> 

Я проверил зависимости в позах, и все в порядке.

Любые предложения?

ответ

0

Если вы говорите в eclipse (m2e-wtp), попробуйте щелкнуть правой кнопкой мыши по проекту и выполнить экспорт -> EAR и посмотреть, что выйдет. Я сделал это и заметил, что банки были выпущены в корень EAR (m2e-wtp фактически игнорировал <defaultJavaBundleDir>).

Я изменил его, чтобы использовать <defaultLibBundleDir> вместо этого (maven изменило имя параметра на это, но сохранил defaultJavaBundleDir для обратной совместимости), и он работал, как ожидалось.

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