我有一个 EAR,其中包含一个 WAR 和一个 EJB(jar)。EJB 和 WAR 共享一些库,所以我想使用maven-ear-plugin
.
我的 ear pom 配置了共享库作为依赖项,并将<skinnyWars>
选项设置为 true。
我看到我的 EAR 已正确构建;公共库从我的 WAR 中提取并放置在 EAR 中。
我的问题是,当我在 Websphere 8.5 上启动 EAR 时,WAR 无法找到保留在 WAR/WEB-INF/lib 文件夹中的类。
我检查了 war/META-INF/ 中的 MANIFEST.MF 并看到列出了所有库(war/web-inf/lib 文件夹中的那些以及公共库),但是ClassNotFoundException
每当我得到尝试从 WEB-INF/lib/xxx.jar 中访问类。
(来自 pom.xml 的片段)
<dependencies>
<dependency>
<groupId>com.webinfo</groupId>
<artifactId>WebInfoWebApp</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>com.webinfo</groupId>
<artifactId>WebInfoEJB</artifactId>
<version>${project.version}</version>
<type>ejb</type>
</dependency>
<!-- In order to make skinnyWars, need to list all the common dependencies of the EAR here -->
<!-- Use the ejb pom to list all the ejb dependencies here automatically -->
<dependency>
<groupId>com.webinfo</groupId>
<artifactId>WebInfoEJB</artifactId>
<version>${project.version}</version>
<type>pom</type>
</dependency>
</dependencies>
<build>
<plugins>
<!-- EAR plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10</version>
<configuration>
<defaultLibBundleDir>/</defaultLibBundleDir>
<skinnyWars>true</skinnyWars>
<archive>
<manifestFile>META-INF/MANIFEST.MF</manifestFile>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
<modules>
<webModule>
<groupId>com.webinfo</groupId>
<artifactId>WebInfoWebApp</artifactId>
<bundleFileName>WebInfoWeb.war</bundleFileName>
</webModule>
<ejbModule>
<groupId>com.webinfo</groupId>
<artifactId>WebInfoEJB</artifactId>
<bundleFileName>WebInfoEJB.jar</bundleFileName>
</ejbModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
EAR清单.mf:
Class-Path: WebInfoWeb.war WebInfoEJB.jar core_business-5.1.0.jar core
_common-5.1.0.jar core-5.1.0.jar ICS_SSEClient-3.5.15.jar com.ibm.uti
l.ini-1.0.jar ICS_SecuredUserContext-3.5.15.jar ICS_SecuredUserContex
tClient-3.5.15.jar ICS_ManageClient-3.5.15.jar ICS_ConfigurationClien
t-3.5.15.jar ICS_Common-3.5.15.jar
WAR清单.mf:
Class-Path: WebInfoJava-3.9.0-SNAPSHOT.jar com.ibm.util.ini-1.0.jar ow
asp-esapi-full-java-1.4.jar regexp-1.2.jar com.ibm.regex.REUtil-1.3.0
.jar ojdbc6-11.2.0.3.0.jar AdobeFDF-1.0.jar core_business-5.1.0.jar c
ore_common-5.1.0.jar core-5.1.0.jar ICS_SSEClient-3.5.15.jar ICS_Secu
redUserContext-3.5.15.jar ICS_SecuredUserContextClient-3.5.15.jar ICS
_ManageClient-3.5.15.jar ICS_ConfigurationClient-3.5.15.jar ICS_Commo
n-3.5.15.jar
例外:
java.lang.ClassNotFoundException: com.calculator.sendmail.SendMailCommunicationBusinessFactory
但SendMailCommunicationBusinessFactory
位于WebInfoJava-3.9.0-SNAPSHOT.jar
war/WEB-INF/lib文件夹中。
我在设置/配置类路径的方式上做错了什么吗?