Java和Android commons-codec使用及NoSuchMethodError问题

24 篇文章 0 订阅

简介

Commons codec,是Apache开源组织提供的用来处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64,URL,Soundx等等。不仅是编码,也可用于解码。

常用类及功能

1、Base64编码和解码 2、Hex编码和解码 3、MD5加密(MD5是不可逆算法,只能加密) 4、SHA加密  5、Metaphone和Soundex  六、URLCodec

源码

地址
https://commons.apache.org/proper/commons-codec/download_codec.cgi
或者
https://github.com/apache/commons-codec

Java 项目中使用

<dependency>
  <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>1.15</version>
</dependency>

Android使用

可惜没有提供gradle依赖,只能从源码或者下载bin文件下将jar包复制到Android项目中使用,但是在Android中使用会出现java.lang.NoSuchMethodError: No static method decodeHex(Ljava/lang/String;)
[B in class Lorg/apache/commons/codec/binary/Hex; or its super classes (declaration of 'org.apache.commons.codec.binary.Hex' appears in /system/framework/org.apache.http.legacy.boot.jar)

原因

Android系统内部也有一份我们使用的API的包名和类名,关键一点是系统中没有该方法!于是导致包名冲突,然后系统就在自己的SDK找到了同样名字的这个类,然后去调用系统自己该类下面我们用的那个方法。
然而系统根本就没有那个方法,根本就没被调用到。然后就没有然后了

解决办法

自己获取到源码,修改包名,然后重新编译成jar包,然后导入Android项目中使用;重新编译运行一下自己的Android项目,你会发现,之前的问题没有了;

在Android中能使用的commons-codec版本是1.15

https://pan.baidu.com/s/1zb9LWobL_Q9dHJdyZwvYjg 

提取码:4v7q

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ang_qq_252390816

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值