无法将Dynamic Web Module部署至Glassfish 4服务器的求助
解决Glassfish部署EJB模块时"DeploymentContext does not contain any EJB"的问题
根据你描述的情况,核心问题确实是Eclipse与Maven的项目同步异常,导致Eclipse部署时没有正确识别并包含带注解的EJB类。下面是针对性的解决步骤:
1. 强制Eclipse与Maven同步
- 右键项目 → Maven → Update Project...
- 勾选
Force Update of Snapshots/Releases,点击确定,等待同步完成 - 同步后重新尝试部署到本地Glassfish
2. 检查Eclipse的Deployment Assembly配置
Eclipse可能没把编译后的EJB类加入部署包:
- 右键项目 → Properties → Deployment Assembly
- 确认是否有
src/main/java对应的条目,且输出路径是WEB-INF/classes - 如果没有,点击Add → Java Build Path Entries → 选择
src/main/java,添加后保存
3. 验证项目的Java EE版本设置
确保项目的Java EE版本与web.xml、EJB注解兼容:
- 右键项目 → Properties → Project Facets
- 确认:
- Dynamic Web Module是3.1(和web.xml版本一致)
- Java版本为1.8(Glassfish 4推荐适配版本)
- EJB模块已勾选(版本选择3.2,对应Java EE 7规范)
4. 清理Eclipse本地编译缓存
有时候编译缓存会导致类文件未更新:
- 右键项目 → Clean... → 选择当前项目,点击确定
- 然后执行Project → Build Project,重新编译后再部署
5. 检查Eclipse的Glassfish部署配置
确保部署时使用的是Maven打包的产物,而非Eclipse自行编译的文件:
- 打开Servers视图,右键本地Glassfish服务器 → Add and Remove...
- 移除当前项目,点击Finish
- 重新添加项目时,选择
target目录下Maven打包好的war文件,而非项目本身
另外补充一点:你的DAONouvelle类注解配置本身没有问题,但要确认persistence.xml放在src/main/resources/META-INF目录下,确保Eclipse能正确将其复制到部署包中。
按照这些步骤操作后,应该能解决Eclipse部署时找不到EJB的问题。
内容的提问来源于stack exchange,提问作者FlawTECH
相关产品推荐
相关产品推荐

