我用Wildfly安装了Eclipse和Jboss工具插件。我创建了一个EAR项目,一个WAR项目和两个EJB jar项目app1
和app2
。我将所有项目都转换为Maven。
app1
使用app2
类。这在Eclipse中编译良好。但是,当我运行该应用程序时,我得到了ClassNotFoundException
。
EAR pom.xml具有依赖项:
<dependencies>
<dependency>
<groupId>app1</groupId>
<artifactId>app1</artifactId>
<version>1.0</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>mywar</groupId>
<artifactId>mywar</artifactId>
<version>1.0</version>
<type>war</type>
</dependency>
<dependency>
<groupId>app2</groupId>
<artifactId>app2</artifactId>
<version>1.0</version>
<type>ejb</type>
</dependency>
</dependencies>
如果我在清单中的app2.jar
的类路径中添加app1
,则app1
可以找到该类。问题是,当我在app1
中更改类时,将自动重新创建MANIFEST,并删除类路径。
这有效:
Class-Path: app2-1.0.jar
我在app1
pom.xml中添加了一个插件,用于在类更改时更新MANIFEST,但它没有任何改变:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<Class-Path>app2-1.0.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
如何解决此问题?
答案 0 :(得分:0)
这解决了app1 pom.xml中的问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<Class-Path>app2-1.0.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>