我在部署我的.ear时遇到了“java.lang.NoClassDefFoundError:br / com / company / comum / entity / api / MyEntity”。这个“MyEntity”在“ejb-commo”n模块上,是JPA实体实现的接口。模块“ejb-testapp”有一些实现“MyEntity”的JPA实体。
<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>
我已经检查了poms中的依赖项,它没问题。
有什么建议吗?
答案 0 :(得分:0)
如果您在eclipse(m2e-wtp)中谈论过,那么请尝试右键单击该项目并执行导出 - &gt; EAR,看看会发生什么。我这样做了,并注意到罐子被输出到EAR的根部(m2e-wtp实际上忽略了&lt; defaultJavaBundleDir&gt;)。
我将其更改为使用&lt; defaultLibBundleDir&gt;相反(maven已将设置的名称更改为此,但保持defaultJavaBundleDir对向后兼容有效)并且它按预期工作。