テンセントメール統合エラー:NoClassDefFoundError:org/apache/http/client/config/RequestConfig
3717 ワード
一.問題の説明
今日テンセントのショートメッセージsdkを使ってMavenプロジェクトの依存過程で以下の依存パッケージを追加しました.
メール送信方法(テンプレート送信)を呼び出すと、次のようにエラーが表示されます.
二.原因分析
1.インターネットで検索すると、ほとんどがhttpclientパッケージが不足していると言われていますが、本プロジェクトではhttpclientパッケージが追加されています.
2.Maven依存関係を見ると、テンセントqcloudsmsパッケージが使用するhttpclient 4.5に依存していることが分かった.3,原因はやっとjarパッケージを見つけて直接衝突しました!
三.解決策
方法1.元のプロジェクトのhttpclientパッケージのバージョン番号とqcloudsmsのバージョン番号が一致することを変更します(4.5.3).方法2.maven-shadeプラグインを使用して、パッケージの競合をフィルタします.
主にrelocationsを使用して競合パッケージの名前を変更する構成です
今日テンセントのショートメッセージ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パッケージを見つけて直接衝突しました!
三.解決策
方法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