移除冗余Jar后WildFly部署报IllegalArgumentException错误求助
WildFly 13部署时ASM ClassReader初始化异常解决方案
针对你遇到的java.lang.IllegalArgumentException(根源为jersey.repackaged.org.objectweb.asm.ClassReader初始化异常),结合项目环境(Java 1.8、JSF 8.0、WildFly 13、Maven 3.3.3)及Jar清理背景,可按以下步骤排查解决:
1. 优先清理WildFly部署缓存
回滚代码后仍异常,大概率是容器缓存残留导致类加载状态混乱:
- 停止WildFly服务
- 删除
standalone/data/content、standalone/tmp、standalone/work目录下的所有文件 - 重启WildFly后重新部署项目
2. 排查ASM版本冲突
异常核心是ASM类初始化失败,通常由版本不匹配导致:
- 执行
mvn dependency:tree生成项目依赖树,查找所有asm相关依赖,确认是否存在与WildFly内置Jersey(2.26版本)所依赖ASM版本不一致的情况 - WildFly 13内置Jersey 2.26使用的ASM版本为7.0,若项目中引入了其他版本的ASM,需调整pom.xml:要么将其
<scope>设为provided(复用容器版本),要么强制统一到匹配版本
3. 检查移除Jar的间接依赖影响
你移除的Jar中可能存在ASM的间接依赖,或影响容器类加载顺序:
xmlbeans-2.3.0.jar本身依赖ASM,移除后可能导致项目中ASM依赖缺失,需确认项目是否通过其他依赖补充了ASM,或在pom.xml中显式添加匹配版本的ASM依赖jsr311-api-1.1.1.jar是JAX-RS 1.x API,WildFly 13默认使用JAX-RS 2.x,若项目残留JAX-RS 1.x代码,需在jboss-deployment-structure.xml中配置模块隔离:<jboss-deployment-structure> <deployment> <exclusions> <module name="javax.ws.rs.api"/> </exclusions> <dependencies> <module name="javax.ws.rs.api" slot="1.1" services="import"/> </dependencies> </deployment> </jboss-deployment-structure>
4. 验证Jar移除的合理性
部分Jar看似未被使用,实则通过反射或动态加载被调用:
- 使用依赖分析工具(如Maven Dependency Plugin的
unused目标)重新扫描项目,确认jackcess-1.2.10-SNAPSHOT.jar、gson-1.6.jar等是否真的无代码引用,若存在隐式引用,需重新引入或替换为兼容版本
内容的提问来源于stack exchange,提问作者Sachin Hiremath
相关产品推荐
相关产品推荐

