Maven构建报错:Package org.apache.commons.pool2.impl不存在
Maven构建报错:Package org.apache.commons.pool2.impl does not exist
问题表现
执行mvn install构建Maven项目时抛出编译错误,错误提示为 Package org.apache.commons.pool2.impl does not exist。
已确认的现象:
org.apache.commons.pool2包已下载到本地Maven仓库,但IDEA的External Libraries列表中不存在该包- 手动将
commons.pool2添加到Project Structure->Libraries后,只要reload Maven项目,该依赖就会从库和模块中自动消失 - 尝试在pom.xml中显式引入2.6.0版本的commons-pool2依赖无法解决问题,还会触发项目其他新的编译报错
相关依赖配置
当前pom.xml中Redis相关依赖配置如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.8.23.RELEASE</version> </dependency> <dependency> <groupId>org.crazycake</groupId> <artifactId>shiro-redis</artifactId> <version>2.8.20</version> </dependency>
此前尝试添加的commons-pool2依赖配置:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.6.0</version> </dependency>
问题根因
核心为依赖版本不兼容+Maven依赖仲裁冲突:
- 手动排除了Spring Boot官方统一管理的
spring-data-redis依赖,单独引入1.8.23.RELEASE低版本,破坏了Spring Boot官方的依赖版本对齐规则 - 手动指定的commons-pool2 2.6.0版本与1.8.x分支的spring-data-redis、2.8.20版本的shiro-redis存在兼容性问题,Maven执行依赖调解时会自动排除不匹配版本的依赖,导致该包无法正常导入项目类路径
- 直接在IDEA Project Structure中手动添加库的操作不会修改pom.xml文件,Maven重载时会以pom配置为准重置项目依赖,因此手动添加的包会自动消失
修复步骤
- 调整commons-pool2依赖版本,替换为和
spring-data-redis 1.8.23.RELEASE兼容的2.4.2版本,删除此前引入的2.6.0版本配置 - 如果没有强需求必须使用指定1.8.23版本的spring-data-redis,建议直接删除spring-data-redis的exclusion配置和单独引入的依赖项,使用Spring Boot starter自带的版本对齐依赖,从根源避免版本冲突问题
- pom配置修改完成后,在项目根目录执行以下命令清理构建缓存并强制拉取正确版本的依赖:
mvn clean install -U - 返回IDEA执行Maven reload操作,如果依赖仍未正常加载,关闭IDEA后删除项目根目录下的
.idea文件夹和所有模块的target目录,重新打开项目导入Maven依赖即可
内容的提问来源于stack exchange,提问作者Xy.dht
相关产品推荐
相关产品推荐

