2

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

2 回答 2

1

在 Commons Codec 库的 1.4 版本中添加了Base64#encodeBase64String方法。

问题是 Android 框架包含这个类,运行时将使用它的版本(而不是你在应用程序中打包的类)。由于框架随附于 Commons Codec 1.3 版,因此不存在请求的方法。

在此处查看我的答案,其中包括解决此问题的步骤。

于 2015-04-25T09:09:06.677 回答
0

你知道sun.misc.BASE64Decoder jar file在你的项目中包含这个 jar 文件吗?sun.misc.BASE64Decoder

于 2014-03-13T11:25:37.227 回答