Android使用commons-codec-1.6 遇到的问题

在Android项目中使用commons-codec-1.6进行MD5加密时遇到encodeHexString()方法找不到的问题。原因是Android系统内部库存在org.apache.commons.codecs包,导致包名冲突。解决方案包括使用encodeHex()替代encodeHexString()或重新编译源码,更改包名为避免冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于需要用到Android 中的md5加密,之前在服务端使用该jar觉得很赞,于是导入android工程也使用,出现问题了,

找不到encodeHexString()方法,

后来在万能的stackoverflow 找到解决方案:

String s = DigestUtils.md5Hex(data);

Replace this statement with the following and it will work:

String s = new String(Hex.encodeHex(DigestUtils.md5(data)));

Similarly, for shaHex exampl, you can change it to

String hash = new String(Hex.encodeHex(DigestUtils.sha("textToHash");

This works because even though Android does not have encodeHexString(), it does have encodeHex(). Hope this would help others who run into the same issue.


根本原因应该是android内部库也有一个org.apache.commons.codecs.*的 jar,导致包名冲突,而优先加载了系统的,而系统的jar包中却没有encodeHexString():

解决方案:

方案1 以上的解决方法,做encodeHexString的工作吧,encodeHexString没有,encodeHex还是有的。

方案2.源码重新编译,改下报名为org.myapache.commons.codecs,这下不冲突了,哈哈。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值