Handler dispatch failed;nested exception is java.lang.NoClassDefFoundError: org/apache/hc/client5/

作者分享了在引入httpclient5时遇到的NoClassDefFoundError问题,通过POM文件中的dependencyManagement解决了不同版本依赖冲突。
摘要由CSDN通过智能技术生成

一、问题

项目引入一个第三方jar包,第三方jar包引入了

<dependency>
	<groupId>org.apache.httpcomponents.client5</groupId>
    <artifactId>httpclient5</artifactId>
    <version>5.2.1</version>
</dependency>

然后在运行的时候报错Handler dispatch failed;nested exception is java.lang.NoClassDefFoundError: org/apache/hc/client5/http/config/ConnectionConfig,我在网上搜这个错都是说运行时找不到这个类,但是第三方jar包明明引入了,我又在项目中尝试引入httpclient5,还是报错。然后我就点进第三方jar包使用httpclient5具体类的地方,发现ConnectionConfig用Ctrl+鼠标左键点不进去,同一个包下其他的类能点进去,我就看看其他的类在哪个包下,结果发现在5.1.4版本的包下,而5.1.4版本的包没有ConnectionConfig这个类。

我尝试把5.1.4和5.2.1的包都删掉还是不行,只导入5.2.1他会把5.1.4的包也导进来,这样运行时还是调用5.1.4包里的类。试过各种方法,锁定版本号,排除依赖都不行,因为这个5.1.4版本可能不知道哪里来的传递依赖。

在这里插入图片描述

二、解决

最终解决:使用 Dependency Management:在项目的顶层 POM 文件中使用 <dependencyManagement> 部分来统一管理依赖版本。这样最终引入的就是5.2.1版本的。

<properties>
	<httpclient5.version>5.2.1</httpclient5.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents.client5</groupId>
            <artifactId>httpclient5</artifactId>
            <version>${httpclient5.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

本人只是一个菜鸟,希望为遇到同样问题的人提供下解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值