EJB类加载器的NoClassDefFoundError

时间:2012-02-15 13:18:33

标签: ejb classloader

我在部署我的.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中的依赖项,它没问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您在eclipse(m2e-wtp)中谈论过,那么请尝试右键单击该项目并执行导出 - &gt; EAR,看看会发生什么。我这样做了,并注意到罐子被输出到EAR的根部(m2e-wtp实际上忽略了&lt; defaultJavaBundleDir&gt;)。

我将其更改为使用&lt; defaultLibBundleDir&gt;相反(maven已将设置的名称更改为此,但保持defaultJavaBundleDir对向后兼容有效)并且它按预期工作。