在 Android 应用程序中使用 commonc 编解码器时出现 NoSuchMethodError

发布于 2024-10-19 22:03:38 字数 584 浏览 2 评论 0原文

我按照指令 此处。代码中没有错误。但是,当我运行应用程序并调用使用编解码器的函数时,应用程序停止并需要提前关闭。

在 logCat 中说:

Android Runtime: java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String

代码行是: 字符串 tmpStr = Base64.encodeBase64String(msg); //msg 是一个 byte[]

该应用程序适用于最小 SDK 版本 = 7 (Android 2.1),所以我不能使用 Android Base64

知道如何解决这个问题吗?

I added the commons codec from apache.org (commons-codec-1.4.jar) in eclipse for my Android application following the instruction here. There is no error in the code. But when I run the application and call the function that use the codec the application stop and need a fore close.

In the logCat says:

Android Runtime: java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String

the codeline is:
String tmpStr = Base64.encodeBase64String(msg); //msg is a byte[]

The application is for a min SDK version = 7 (Android 2.1), so I can't use Android Base64

Any idea how can I solve the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

尴尬癌患者 2024-10-26 22:03:38

我也无法让 commons 编解码器在 2.1 模拟器上运行。我最终放弃了并制作了自己的代码,从以下位置复制代码:

Base64编码器/解码器

只有一百多行左右。

I couldn't get the commons codec to run on a 2.1 emulator either. I gave up in the end and made my own, copying the code from:

Base64 encoder/decoder

It's only just over a hundred lines or so.

风流物 2024-10-26 22:03:38

我遇到了完全相同的问题。所以我开始浏览 android 源代码,事实证明 Don 关于 Android 具有 org.apache.commons.code.binary 实现的猜测是正确的。他对访问它的能力是错误​​的,你可以,但它是 apache commons 的 1.2 版本,而不是 1.4 甚至 1.5 版本。
您可以在 android .

另请注意,此问题与这篇文章重复。

I experienced the exact same problem. So i started browsing the android source code, and as it turns out Don's guess about Android having an implementation of org.apache.commons.code.binary is correct. he's wrong about the ability to access it, you can, but its version 1.2 of the apache commons, not version 1.4 or even 1.5.
You can see for your self in the android source.

Also as a note, this question is a duplicate of this post.

揽清风入怀 2024-10-26 22:03:38

我认为这与 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,并且它不允许您在代码中再次使用它。

I think it has something to do with the name conflicts inside Android libraries.

I copied the java source code of Base64 to my project into the the namespace of org.apache.commons.codec.binary. The project compiled without any problem. However, at the runtime in Android simulator, I had the same error, java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String.

However, after I changed the namespace to com.apache.commons.codec.binary instead of org, the app runs like magic. I guess inside Android implementation, org.apache.commons.codec.binary is used and it doesn't allow you to use it in your code again.

厌倦 2024-10-26 22:03:38

您遇到问题的原因是这些指令是错误的,但必须存在不同版本的 commons-codec 或 Base64 类。

我的理解是,您需要将 jar 文件放入项目根目录的“libs”目录中,以确保它自动出现在最终的 apk 中。一旦你把它放在那里,右键单击jar文件,然后转到构建路径->;添加到构建路径。应该从那里开始工作。

The reason you are having an issue is because those instructions are wrong but there must be a different version of the commons-codec or Base64 class present.

My understanding is that you need to put your jar file into a 'libs' directory at the root of your project to ensure it ends up automatically inside the final apk. Once you put it there, right click the jar file and then go to Build Path-> Add to build path. Should work from there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文