关闭

java.lang.IncompatibleClassChangeError: BasicHttpParams

标签: BasicHttpPIncompatib异常微信
462人阅读 评论(0) 收藏 举报
分类:

java.lang.IncompatibleClassChangeError:

关于上面的异常,基本就是不兼容导致的,也许有时你开发时,没问题,但正式发布release时,出现崩溃了,这种情况也是有的。

我在集成微信和QQ等第三方时,调试没问题,但release时,登录可以拉取权限,但返回崩溃,支付是过一会崩溃,日志如下:

**********2017-05-25 11:09:44**********
java.lang.IncompatibleClassChangeError: Class 'org.apache.http.params.BasicHttpParams' does not implement interface 'org.apache.http.params.c' in call to 'org.apache.http.params.c org.apache.http.params.c.setIntParameter(java.lang.String, int)' (declaration of 'org.apache.http.params.b' appears in 

然后发现了这个BasicHttpParams。这个方法我查到是Httpcore里面的方法,我试了换版本,有可能是运气不好,然后想其他方法。

发现,支付里最后拉起支付是api.sendReq(req);这个方法。而BasicHttpParams这个只是生成后键值用做签名而已。既然是key和value的键值对,那Map也可以。所以直接替换Map。

Map<String ,Object> date=new HashMap<>();
            date.put("appid", req.appId);
            date.put("noncestr", req.nonceStr);
            date.put("package", req.packageValue);
            date.put("partnerid", req.partnerId);
            date.put("prepayid", req.prepayId);
            date.put("timestamp", req.timeStamp);
            req.sign = genAppSign(date);
            sb.append("sign\n" + req.sign + "\n\n");

签名代码:

    //获取支付签名Sign
    StringBuilder sb = new StringBuilder();
    public String genAppSign(Map<String,Object> params) {
        StringBuilder sb = new StringBuilder();

        sb.append("appid");
        sb.append('=');
        sb.append( params.get("appid"));
        sb.append('&');

        sb.append("noncestr");
        sb.append('=');
        sb.append( params.get("noncestr"));
        sb.append('&');

        sb.append("package");
        sb.append('=');
        sb.append( params.get("package"));
        sb.append('&');

        sb.append("partnerid");
        sb.append('=');
        sb.append( params.get("partnerid"));
        sb.append('&');

        sb.append("prepayid");
        sb.append('=');
        sb.append( params.get("prepayid"));
        sb.append('&');

        sb.append("timestamp");
        sb.append('=');
        sb.append( params.get("timestamp"));
        sb.append('&');

        sb.append("key=");
        sb.append(WeiXinConstans.APP_KEY);    //WeiXinConstans.APP_KEY
        this.sb.append("sign str\n" + sb.toString() + "\n\n");
        String appSign = MD5.getMessageDigest(sb.toString().getBytes()).toUpperCase();
        return appSign;
    }

#####注意:以上没简化。签名过程

最后登录里面解析用了BasicHttpParams这个的全部替换。

最后完美解决。

以上为博主原创,如需转载,请注明出处http://blog.csdn.net/aierJun/article/details/72739534,谢谢。如说明有误,欢迎指教,谢谢。

1
0
查看评论

关于java.lang.IncompatibleClassChangeError: Implementing class错误解决

在尝试elastic-job 分布式任务时,跑example代码,任务正常启动。把example迁移到我们自己的应用后,发现无法启动,报错如下: Exception in thread "main" java.lang.IncompatibleClassChangeError: ...
  • yaowj2
  • yaowj2
  • 2015-11-26 18:40
  • 18068

activeandroid在android5.0报IncompatibleClassChangeError错误

activeandroid在android5.0报IncompatibleClassChangeError错误
  • zhangshao45612
  • zhangshao45612
  • 2017-01-10 15:55
  • 848

HttpClient 教程 (一)

HttpClient最重要的功能是执行HTTP方法。一个HTTP方法的执行包含一个或多个HTTP请求/HTTP响应交换,通常由HttpClient的内部来处理。而期望用户提供一个要执行的请求对象,而HttpClient期望传输请求到目标服务器并返回对应的响应对象,或者当执行不成功时抛出异常。 ...
  • yujian_bing
  • yujian_bing
  • 2012-11-12 17:04
  • 6826

Android studio 解决“Cannot resolve symbol BasicHttpparams”

Android Studio 无法识别同一个 package 里的其他类,将其显示为红色,但是 compile 没有问题。鼠标放上去后显示 “Cannot resolve symbol XXX”,重启 Android Studio,重新 sync gradle,Clean build 都没有用。 ...
  • houli1314521126com
  • houli1314521126com
  • 2017-11-24 11:28
  • 52

HttpGet &&HttpPost方法发送header,params, Content

public static JSONObject post(String url,JSONObject json,Map headers){ HttpClient client = new DefaultHttpClient(); HttpPost post = ...
  • fhlkm
  • fhlkm
  • 2012-08-08 17:51
  • 57767

HttpClient和HttpGet 设置参数的优先级

一般在使用HttpClient时,我们提前设置好参数,比如超时时间(一般socket超时和连接超时) private DefaultHttpClient createHttpClient() { //代码1 ThreadSafeClientConnManager connectMag...
  • zhanlijun
  • zhanlijun
  • 2013-09-01 22:28
  • 3672

好久没写博文了,写个Http连接请求获取给大家,里面一些详细参数设置,都有注释

private static HttpClient httpClient; private static int DEAFUL_BUFFER_SIZE = 8169; public static synchronized HttpClient getInstace() throws Key...
  • q849340003
  • q849340003
  • 2014-06-09 17:28
  • 1208

jar包问题的解决:java.lang.IncompatibleClassChangeError

摘要 在集成多maven项目的时候,出现了这个错,于是记录下解决的过程。 今天整理了Maven的pom.xml文件后,把多个项目用maven集成在了一起,结果在启动Tomcat的时候,遇到一个奇葩的错误: jar包问题的解决:java.lang.IncompatibleClassChangeErro...
  • w1014074794
  • w1014074794
  • 2016-09-07 09:51
  • 2229

解决java.lang.IncompatibleClassChangeError

今天整理了Maven的pom.xml文件后,把多个项目用maven集成在了一起,结果在启动Tomcat的时候,遇到一个奇葩的错误: 严重: Servlet [spring] in web application [/AbcWeb]&#...
  • znit2003
  • znit2003
  • 2017-06-13 16:54
  • 728

java.lang.IncompatibleClassChangeError:Implementing class

网上找了很多解决办法,都说是加载的jar包有冲突导致的  我本地环境最开始一用的tomcatg版本是apache-tomcat-7.0.54后来换成了apache-tomcat-7.0.62版本的启动tomcat就成功了,应该是tomcat里jar问题
  • luoxiang183
  • luoxiang183
  • 2016-09-20 16:17
  • 261
    个人资料
    • 访问:29909次
    • 积分:748
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:3篇
    • 译文:0篇
    • 评论:8条
    最新评论