Java1.6迁移至1.8后JBOSS部署ear文件抛出IllegalArgumentException异常
问题根因
该报错为JBoss EAP 7/WildFly系列版本的部署规则校验错误,核心原因是EAR包内的novartis-clinpro-web.war子模块被引用时,模块名没有按照JBoss要求添加deployment.前缀,无法被服务模块加载器识别。
修复步骤
- 步骤1:修正Maven ear构建配置
打开ear模块的pom.xml文件,检查maven-ear-plugin的<modules>配置,删除web模块下自定义的<moduleName>配置项,不要手动指定不符合规则的模块名。
参考正确配置:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <version>2.10.1</version> <configuration> <version>6</version> <modules> <webModule> <groupId>com.novartis</groupId> <!--替换为你的web模块实际groupId--> <artifactId>novartis-clinpro-web</artifactId> <contextRoot>/clinpro</contextRoot> <!-- 移除手动配置的<moduleName>标签 --> </webModule> </modules> </configuration> </plugin> - 步骤2:修正JBoss部署描述符配置
解压构建好的EAR包,检查META-INF/jboss-deployment-structure.xml文件,所有引用内部子模块的配置都需要添加deployment.前缀+EAR包名前缀,错误示例:
修正后写法:<module name="novartis-clinpro-web.war" />
无特殊类加载隔离需求的场景可以直接删除该文件,使用JBoss默认类加载规则即可。<module name="deployment.novartis-clinpro-ear.ear.novartis-clinpro-web.war" /> - 步骤3:重新构建部署
执行mvn clean package命令重新打包,将新生成的EAR包部署到JBoss即可。
内容的提问来源于stack exchange,提问作者ritika raj
相关产品推荐
相关产品推荐

