Spring Boot升级后出现org.apache.hc.httpclient5.conn.ssl包不存在问题
解决Spring Boot 3.0.2升级后HttpClient5依赖与包路径问题
1. 对齐Spring Boot依赖管理的HttpClient5版本
Spring Boot 3.0.x的spring-boot-dependencies已内置HttpClient5的版本管控,直接引入依赖即可,无需手动指定版本,避免版本冲突:
<dependency> <groupId>org.apache.httpcomponents.client5</groupId> <artifactId>httpclient5</artifactId> </dependency> <!-- 若需SSL相关功能,必须补充引入核心SSL模块 --> <dependency> <groupId>org.apache.httpcomponents.core5</groupId> <artifactId>httpcore5-ssl</artifactId> </dependency>
2. 修正SSL类的包路径
HttpClient5重构了SSL相关类的位置,原org.apache.hc.httpclient5.conn.ssl下的类已迁移至org.apache.hc.core5.ssl,常见替换示例:
- 原4.x的
org.apache.http.conn.ssl.SSLConnectionSocketFactory→org.apache.hc.core5.ssl.SSLConnectionSocketFactory - 原4.x的
org.apache.http.conn.ssl.TrustSelfSignedStrategy→org.apache.hc.core5.ssl.TrustSelfSignedStrategy - 原4.x的
org.apache.http.conn.ssl.SSLContexts→org.apache.hc.core5.ssl.SSLContexts
3. 清理HttpClient4.x残留依赖
检查pom.xml,删除或排除所有旧版HttpClient4.x的依赖(groupId为org.apache.httpcomponents的httpclient/httpcore),避免类加载冲突:
<!-- 若其他依赖间接引入HttpClient4.x,添加排除规则 --> <dependency> <groupId>第三方依赖groupId</groupId> <artifactId>第三方依赖artifactId</artifactId> <exclusions> <exclusion> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </exclusion> <exclusion> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> </exclusion> </exclusions> </dependency>
4. 调整HttpClient实例化代码
HttpClient5的客户端构建逻辑与4.x有差异,示例修正:
原4.x代码:
CloseableHttpClient client = HttpClientBuilder.create().build();
替换为HttpClient5写法:
// 基础默认客户端 CloseableHttpClient client = HttpClients.createDefault(); // 自定义SSL配置示例 HttpClientBuilder clientBuilder = HttpClients.custom(); SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory( SSLContexts.createDefault(), new String[]{"TLSv1.2", "TLSv1.3"}, null, SSLConnectionSocketFactory.getDefaultHostnameVerifier() ); clientBuilder.setSSLSocketFactory(sslSocketFactory); CloseableHttpClient customClient = clientBuilder.build();
5. 校验依赖树
执行mvn dependency:tree命令,确认项目中所有HTTP相关依赖均为HttpClient5系列(groupId为org.apache.httpcomponents.client5或org.apache.httpcomponents.core5),无4.x版本混杂。
内容的提问来源于stack exchange,提问作者gene b.
相关产品推荐
相关产品推荐

