实际上,我正在开发一个加密的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;
}
答案 0 :(得分:1)
问题在于Android框架包含此类,运行时将使用其版本(而不是您在应用程序中打包的类)。由于随Commons Codec 1.3版一起提供的框架,所请求的方法不存在。
查看我的回答here,其中包含解决此问题的步骤。
答案 1 :(得分:0)
你知道sun.misc.BASE64Decoder jar file
只是在你的项目中包含这个jar文件花花公子的名字是sun.misc.BASE64Decoder