Jboss EAP迁移到Tomcat的应用部署失败 报JedisPoolConfig无法解析
报错核心原因
日志中提示的The type redis.clients.jedis.JedisPoolConfig cannot be resolved. It is indirectly referenced from required .class files属于典型的运行时依赖缺失问题:
- 原运行环境JBoss EAP内置了jedis相关公共依赖包,应用无需单独打包即可调用相关类
- Tomcat/TomEE为轻量级Servlet容器,本身不内置任何第三方业务依赖,所有应用所需的依赖必须打入应用包的WEB-INF/lib目录,或者放入Tomcat全局lib目录才能被识别
- 该报错与JSF无关,调整JSF依赖版本无法解决问题
可行解决步骤
- 第一步:检查项目pom.xml是否引入jedis依赖,未引入的话添加与原JBoss环境版本一致的jedis依赖,参考配置:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>替换为和原环境匹配的jedis版本号</version> </dependency>
- 第二步:若已引入jedis依赖,检查依赖的
<scope>配置,如果为provided需要删除该配置,provided代表依赖由容器提供,Tomcat无内置该依赖会导致加载失败 - 第三步:调整依赖后重新打包应用,解压生成的war包,确认WEB-INF/lib目录下存在
jedis-*.jar文件 - 第四步:如果仍报错,执行
mvn dependency:tree命令查看jedis依赖的传递引用情况,排除掉冲突的低版本jedis包 - 第五步:若自定义的
com.tcs.cdm.cache.CacheManager类存放在外部公共Jar包中,需确认该Jar包依赖的jedis版本与应用引入的jedis版本完全一致,避免版本不兼容导致类加载失败
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

