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()的主要内容,如果未能解决你的问题,请参考以下文章

转Android开发学习总结——搭建最新版本的Android开发环境

android开发难学吗? Android开发学习方法

Android开发和JAVA开发有啥区别

Android开发工程师的android工程师简介

Android开发 学生求助了期末大作业

如何Golang开发Android应用