テンセントメール統合エラー:NoClassDefFoundError:org/apache/http/client/config/RequestConfig


一.問題の説明
今日テンセントのショートメッセージsdkを使ってMavenプロジェクトの依存過程で以下の依存パッケージを追加しました.

		
  			com.github.qcloudsms
  			qcloudsms
  			1.0.6
		

メール送信方法(テンプレート送信)を呼び出すと、次のようにエラーが表示されます.
rg.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/client/config/RequestConfig
at org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1305)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:979)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)

at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
......
Caused by: java.lang.NoClassDefFoundError: org/apache/http/client/config/RequestConfig
at com.github.qcloudsms.httpclient.DefaultHTTPClient.fetch(DefaultHTTPClient.java:29)
at com.github.qcloudsms.SmsSingleSender.sendWithParam(SmsSingleSender.java:127)
at com.github.qcloudsms.SmsSingleSender.sendWithParam(SmsSingleSender.java:143)
at com.dz.sms.SmsUtil.sendTemplateSingleSms(SmsUtil.java:65)

二.原因分析
1.インターネットで検索すると、ほとんどがhttpclientパッケージが不足していると言われていますが、本プロジェクトではhttpclientパッケージが追加されています.

		org.apache.httpcomponents
		httpclient
		4.2.5


2.Maven依存関係を見ると、テンセントqcloudsmsパッケージが使用するhttpclient 4.5に依存していることが分かった.3,原因はやっとjarパッケージを見つけて直接衝突しました!腾讯短信集成报错误:NoClassDefFoundError: org/apache/http/client/config/RequestConfig_第1张图片
三.解決策
方法1.元のプロジェクトのhttpclientパッケージのバージョン番号とqcloudsmsのバージョン番号が一致することを変更します(4.5.3).方法2.maven-shadeプラグインを使用して、パッケージの競合をフィルタします.

org.apache.maven.plugins
maven-shade-plugin
3.1.0

    
        package
        
            shade
        
        
            
              
                org.apache.httpcomponents
                org.shaded.org.apache.httpcomponents
              
            
        
    



主にrelocationsを使用して競合パッケージの名前を変更する構成です
   
            
              
                org.apache.httpcomponents
                org.shaded.org.apache.httpcomponents