Android开发:Java.lang.NoSuchMethodError:org.apache.commons.codec.binary.Base64.encodeBase64String()

时间:2014-03-13 11:21:32

标签: android base64 nosuchmethod

实际上,我正在开发一个加密的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;
}

2 个答案:

答案 0 :(得分:1)

在Commons Codec库1.4版中添加了

Base64#encodeBase64String方法。

问题在于Android框架包含此类,运行时将使用其版本(而不是您在应用程序中打包的类)。由于随Commons Codec 1.3版一起提供的框架,所请求的方法不存在。

查看我的回答here,其中包含解决此问题的步骤。

答案 1 :(得分:0)

你知道sun.misc.BASE64Decoder jar file只是在你的项目中包含这个jar文件花花公子的名字是sun.misc.BASE64Decoder