java.lang.NoSuchMethodError: org.apache.http.entity.ByteArrayEntity.(ContentType) 问题的解决方法

java.lang.NoSuchMethodError: org.apache.http.entity.ByteArrayEntity.(ContentType) 问题的解决方法_第1张图片

1 问题

生产环境,调用第三方接口,抛出 java.lang.NoSuchMethodError: org.apache.http.entity.ByteArrayEntity.([BLorg/apache/http/entity/ContentType;)V 异常。

2 分析

工程的 lib 文件夹下包含有两个不同版本 http-core:

java.lang.NoSuchMethodError: org.apache.http.entity.ByteArrayEntity.(ContentType) 问题的解决方法_第2张图片

它们在同路径下,都含有同名的 ByteArrayEntity 类:

生产环境,加重了旧版本的 httpcore,所以抛错。

4.2 版本的 ByteArrayEntity 类,才带有 ContentType 入参的构造函数:

3 解决

去除低版本的 httpcore 包。


由此可见,使用 Maven 对依赖包统一管理的重要性。

你可能感兴趣的:(Java)