httpclient版本冲突,maven工程中传递依赖导致的版本冲突

A服务发送http请求调用B服务时,出现异常信息:
2020-03-23 10:15:14.001:WARN:oejs.ServletHandler:qtp760563749-27:
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/util/Args
at org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1287)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.proce***equest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at org.eclipse.jetty.server.Server.handle(Server.java:523)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
at java.lang.Thread.run(Thread.java:748)
Caused by:
java.lang.NoClassDefFoundError: org/apache/http/util/Args
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:81)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
at com.kutesmart.bl.commons.utils.HttpHelper.doSendPostOrign(HttpHelper.java:76)
at com.kutesmart.bl.rest.services.ScmService.sendLjmlToScm(ScmService.java:974)
at com.kutesmart.bl.rest.services.ScmService.sendZmlLjml(ScmService.java:279)
at com.kutesmart.bl.rest.services.ScmService$$FastClassBySpringCGLIB$$b75c9845.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:266)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
at com.kutesmart.bl.rest.services.ScmService$$EnhancerBySpringCGLIB$$878a1b3.sendZmlLjml(<generated>)
at com.kutesmart.bl.task.CreateLjmlBuyRequest.sendLjml(CreateLjmlBuyRequest.java:131)
at com.kutesmart.bl.task.CreateLjmlBuyRequest.execute(CreateLjmlBuyRequest.java:73)
at com.kutesmart.bl.task.CreateLjmlBuyRequest$$FastClassBySpringCGLIB$$eb2b1ab4.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at com.alibaba.druid.support.spring.stat.DruidStatInterceptor.invoke(DruidStatInterceptor.java:72)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
at com.kutesmart.bl.task.CreateLjmlBuyRequest$$EnhancerBySpringCGLIB$$9b550b10.execute(<generated>)
at com.kutesmart.bl.task.service.JobTaskService.exec(JobTaskService.java:48)
at com.kutesmart.bl.task.service.JobTaskService$$FastClassBySpringCGLIB$$ef1fd73e.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
……

经过网上查找,说是缺少相关jar包httpcore、httpclient;或者是jar包版本冲突。
结合自身项目配置,项目中已经配置了httpclient的4.5.1版本,但是没配置httpcore。
于是将httpclient升到最高版本4.5.12,添加httpcore。

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.13</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>

然后maven打包,重启项目,发送请求,结果成功。

顺便提一下,如果存在父级服务则在父级添加依赖申明版本(如上述代码),子服务依赖时不需申明版本(如下代码)。
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</dependency>

注:本文是日常异常解决记录,仅供参考,谢谢浏览。

原文地址:https://blog.51cto.com/ycylong/2481054

时间: 2024-11-05 18:57:07

httpclient版本冲突,maven工程中传递依赖导致的版本冲突的相关文章

maven工程中警告[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!

[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent! [警告]使用时平台编码格式(GBK actually)进行解析的文件资源,也就是说,构建是依赖于平台的! 错误原因:一些源文件的编码格式并不是工具平台的默认的解析格式,二者有冲突,所以报错 解决方法:在maven工程中的父工程POM中加入以下代码" <properties

本地jar包在maven工程中pom引用

背景 ??在使用Maven的过程中,经常碰到有些jar包在中央仓库没有的情况.如果公司有私服,那么就把jar包安装到私服上.如果没有私服,那就把jar包安装到本地Maven仓库.下面是如何把jar包导入本地maven仓库. 解决方法 1.确定包信息 groupId:设置项目代码的包名(一般用公司或组织名) artifactId:设置项目名或模块名 version:版本号 packaging:什么类型的文件(jar包) filePath:指定jar文件路径与文件名(同目录只需文件名) 2.在工程根

maven工程中读取resource目录下配置文件

在maven工程中,我们会将配置文件放到src/main/resources下面,例如 我们需要确认resource 下的文件编译之后存放的位置. 它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径. // 1. 声明静态数据源成员变量private static DataSource ds; // 2. 创建连接池对象static { Properties pp = new Prop

Maven的Pom文件中的隐式依赖导致Jar包冲突的问题

在一次的maven项目中遇到这样一个bug: 编译器没有报什么错,但无法编译,或者能编译,项目启动不了.后来我才发现是以下的问题: 项目中的pom文件中,依赖了webx3.core,而webx3.core又隐式依赖了fasttext相关的jar包,同时我在pom中也引人了fasttext.all, fasttext.all也隐式依赖了fasttext相关的jar包,两类jar包版本还不一样,这样就导致了jar包冲突的问题,牵扯到的pom文件依赖如下: <dependency><group

在maven工程中搭建SSM框架的错误总结

第一次搭建Maven工程走了很多弯路,现在总算把项目搭起来并且能正常运行了.故总结一下教训 1.在建立Maven工程前,先确定成功下载安装了Maven.  命令行用 mvn -v  检验 找到Maven的安装目录C:\Program Files\apache-maven-3.5.2\conf中的setting.xml文件,打开后配置本地仓库 <localRepository>C:/Users/lts/.m2/repository</localRepository>  (注意这里的&

如何在maven工程中加载oracle驱动

maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0 时间:2015年09月22日  浏览:9361次 在maven中央库中查找ojdbc,发现最新的版本是10.2.0.4.0,然后在maven项目中引入ojdbc,发现报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0,如下图1所示: 图1:Missing artifact 发现中央库中明明是有的,但是在项目

Activiti系列:如何把Activiti工程转换为maven工程以解决依赖项找不到的问题

在eclipse中安装了Activiti插件之后,就可以新建Activiti工程,但是在实际使用时发现,在该工程中间新建Activiti Diagram,绘制好该图形之后,右键,新建单元测试,选择junit4类型, 1. 创建Activiti工程 2. 新建Activiti Diagram 3. 绘制如下流程 4. 创建该bpmn图形的单元测试 5. 然后单元测试代码就报如下的各种找不到类型的错误 6. 如果是maven的项目,一般可以通过如下方式解决 7. 但是在Activiti类型的工程中,

Maven工程中遇到The import *** cannot be resolved问题

报错提示: The import net.sf.json.JSONObject cannot be resolved. 原因分析: Maven项目在编译的过程中,缺乏相应的jar包,可能是版本冲突,也可能是jar损坏,或者路径找不到. 解决方案: 下载相应的jar包,放到正确的路径下,如net.sf.json.JSONObject就是repository\net\sf\json. jar包下载地址:http://mvnrepository.com/ 原文地址:http://blog.51cto.

【转】新建maven工程为什么jdk会是默认版本 而不是自己设置的版本?

原文链接:为什么我eclipse新建项目的时候默认的是JRE1.5? 修改Maven中conf目录里的setting.xml文件内容,加上如下内容: <profiles> <!-- profile | Specifies a set of introductions to the build process, to be activated using one or more of the | mechanisms described above. For inheritance pur