我按照here指令在eclipse中为我的Android应用程序添加了来自apache.org(commons-codec-1.4.jar)的commons编解码器。代码中没有错误。但是当我运行应用程序并调用使用编解码器的函数时,应用程序停止并需要关闭。
在logCat中说:
Android Runtime:java.lang.NoSuchMethodError:org.apache.commons.codec.binary.Base64.encodeBase64String
代码行是: String tmpStr = Base64.encodeBase64String(msg); // msg是一个byte []
该应用程序适用于最低SDK版本= 7(Android 2.1),因此我无法使用Android Base64
知道如何解决问题?
答案 0 :(得分:8)
答案 1 :(得分:8)
我遇到了完全相同的问题。所以我开始浏览android源代码,因为事实证明Don猜测有一个org.apache.commons.code.binary实现的Android是正确的。你可以,但它的访问能力是错误的,但它的apache公共版本1.2,而不是版本1.4甚至1.5。 你可以在android source中看到自己。
另外,请注意,此问题与this post.
重复答案 2 :(得分:4)
我认为它与Android库中的名称冲突有关。
我将Base64的java源代码复制到我的项目中,并将其复制到org.apache.commons.codec.binary的命名空间中。该项目编译没有任何问题。但是,在Android模拟器的运行时,我遇到了同样的错误,java.lang.NoSuchMethodError:org.apache.commons.codec.binary.Base64.encodeBase64String。
然而,在我将命名空间更改为com.apache.commons.codec.binary而不是org之后,应用程序就像魔术一样运行。我想在Android实现中,使用了org.apache.commons.codec.binary,它不允许你再次在你的代码中使用它。
答案 3 :(得分:0)
您遇到问题的原因是因为这些说明有误,但必须有不同版本的commons-codec或Base64类。
我的理解是你需要将你的jar文件放到项目根目录下的'libs'目录中,以确保它在最终的apk中自动结束。一旦你把它放在那里,右键单击jar文件,然后转到Build Path->添加到构建路径。应该在那里工作。