我正在尝试使用最新的JBoss Tools通过Eclipse Neon将EAR部署到Wildfly 10。这是我第一次尝试使用EAR,所以我记录了自己,这就是我想出的结构:
Maven模块:
api
(类型jar
,没有deps):包含接口MyService
和Person
。ejb
(类型ejb
,取决于api
):包含@Stateless
的{{1}}实施和MyService
@Entity
的实施1}}。Person
(类型war
,取决于war
):包含使用api
的JAX-RS资源。MyService
(类型ear
,取决于ear
和ejb
):EAR模块。(请参阅此处获取完整资料来源:https://github.com/heruan/maven-ear-example)
问题是当我将它部署到Wildfly时,我得到:
war
完整堆栈跟踪:
java.lang.NoClassDefFoundError: Failed to link ejb/MyServiceImpl: api/MyService
我错过了什么?我的目标是让最基本的EAR与其模块共享一个共同的JPA持久性单元。
答案 0 :(得分:0)
我发现了问题所在:重复.class
个文件。看起来像Maven EAR插件不够聪明,以避免重复的依赖,所以你需要明确地将它们设置为provided
。
例如,示例项目中的解决方案是在api
的{{1}}中将provided
模块设置为war
:
pom.xml