【发布时间】:2011-12-30 15:56:34
【问题描述】:
我面临一个问题,如何使用简单的 WAR 和 EJB3 模块为 JBoss7 应用服务器正确打包我的企业 (EAR) 应用程序。问题是,EJB 模块正在使用 XML-RPC 库(来自 Apache),而在部署 EAR 期间,我仍然得到 NoDefClassFound(来自这个 xmlrpc 库的类)。
问题是,maven-ejb-plugin 不在最终的 EJB jar 中打包依赖项,但 maven-ear-plugin 确实打包它位于 EAR 目录的根目录。
当 EAR 被部署时,INSTALL 在内部 EJB 模块上被调用,但它没有找到 xmlrpc lib 类(它不是用 EJB jar 而是用 EAR 打包的,并且它在清单中没有任何条目)。
EJB pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cz.ctu.fee.voxport.app_logic</groupId>
<artifactId>core</artifactId>
<version>1.0</version>
<packaging>ejb</packaging>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-common</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-client</artifactId>
<version>3.1.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<ejbVersion>3.1</ejbVersion>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
有什么方法可以使用 maven 彻底解决这个问题?
【问题讨论】:
-
请发布您的 POM 的相关部分。
-
可能是
provided 的依赖项? -
范围在哪里提供?在 EJB jar 上?这不会将条目添加到类路径(使用 maven-ejb-plugin 时),甚至不会将 jar 包添加到包中。
-
看来我设法在 EJB jar 中拥有 xmlrpc jar(使用 maven-dependency-plugin)和清单中的条目。但我仍然收到 NoClassDefFoundError。我错过了什么吗?
-
你能发布完整的例外吗?
标签: java jakarta-ee maven ejb-3.0