Android 开发:Java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String()
Posted
技术标签:
【中文标题】Android 开发:Java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String()【英文标题】:Android Development : Java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String() 【发布时间】:2014-04-18 02:14:00 【问题描述】:实际上,我正在开发一个带有加密功能的 android 应用程序。当我使用Base64进行编码和解码时,我收到一个错误
Java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String()
在运行时。
我知道 Stackflow 上有一些帖子已经讨论了问题的主要原因 ==> 有不同版本的 commons-codec。
谁能详细描述如何解决这个问题? (到目前为止,我知道有两种解决方案是可行的)。
1) 将org.apache.commons.codec.binary.Base64
导入为客户端命名包。;
2)更新commons-codec的默认库)
目前,我正在使用 adt-bundle-windows-x86-20131030 来开发我的应用程序。 下面是一些代码供参考。
import org.apache.commons.codec.binary.Base64;
public static String receiveSetup(String messageFromActivity)
throws Exception
SecretKey tempKey2 = DES.loadKey();
byte[] test2 = Base64.decodeBase64(messageFromActivity);
byte[] printString = DES.decrypt(test2, tempKey2);
String str = new String(printString, "UTF-8");
return str;
【问题讨论】:
@super-qua 我是这个平台的新手。感谢您为我编辑问题。非常感谢! 【参考方案1】:Base64#encodeBase64String 方法是在 Commons Codec 库 1.4 版本中添加的。
问题是 Android 框架包含这个类,运行时将使用它的版本(而不是你在应用中打包的类)。由于框架随附于 Commons Codec 1.3 版,因此不存在请求的方法。
查看我的回答 here,其中包含解决此问题的步骤。
【讨论】:
【参考方案2】:你知道sun.misc.BASE64Decoder jar file
只需在你的项目中包含这个jar文件,名字是sun.misc.BASE64Decoder
【讨论】:
以上是关于Android 开发:Java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String()的主要内容,如果未能解决你的问题,请参考以下文章