我的.ear文件存在一些问题。该文件的结构是:
app.ear
|-xxx.jar
-yyy.jar
-zzz.jar
-ektorp.jar
-app-ejb.jar
-app-web.war
|-WEB-INF
|-lib
|-xxx.jar
|-yyy.jar
|-zzz.jar
|-ektorp.jar
当我尝试部署我的应用程序时,我得到ClassNotFoundException,类wihch在ektorp.jar中。该文件由ejb模块使用。
我也不知道为什么这些罐子加倍?在耳朵和战争模块中是相同的.jar文件。
耳朵由maven2构建。
答案 0 :(得分:2)
当我尝试部署我的应用程序时,我得到ClassNotFoundException,其中的类在ektorp.jar中。该文件由ejb模块使用。
EJB-JAR是否在清单中的ektorp.jar
条目中引用Class-Path:
(有关此问题的更多背景,请参阅Packaging EJB 3 Applications)?常见问题解答解释了how you can configure the plugin to generate a Class-Path:
entry in the manifest:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.2.1</version>
...
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
...
</plugin>
</plugins>
</build>
...
</project>
以防万一,您是否知道可以使用Java EE 6在.war中打包EJB(不同之处在于使用.war打包时所有类都使用相同的类加载器加载)?如果您没有强大的模块化要求,.war包装会更简单。