dqm*_*inh 47 base64 android apache-commons-codec
今天我尝试在我的Android应用程序中包含apache.commons.codec包,但无法运行它.Android找不到方法ord.apache.commons.codec.binary.*并在DDMS中输出以下错误
01-12 08:41:48.161:ERROR/dalvikvm(457):找不到方法org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString,从方法com.dqminh.app.util.Util.sendRequest引用
01-12 08:41:48.161:WARN/dalvikvm(457):VFY:无法解析静态方法10146:Lorg/apache/commons/codec/binary/Base64; .encodeBase64URLSafeString([B] Ljava/lang/String;
01-12 08:41:48.161:WARN/dalvikvm(457):VFY:在0x0004拒绝操作码0x71
有关如何解决这个问题的任何线索?非常感谢.
Pab*_*dez 60
在我正在开发的OAuth库中使用android时遇到了类似的问题.
我也从android得到了,虽然我已经包含apache.commons.codec在类路径中,encodeBase64String但是找不到特定的方法().
检查javadocs,这两种方法声称只有1.4和更大,所以我的猜测是android已经包含了commons.codec这些方法确实未定义的旧版本.
我的解决方案是使用较旧的方法,如下所示:
String encodedString = new String(Base64.encodeBase64('string to encode'));
Run Code Online (Sandbox Code Playgroud)
您要使用的方法不同,因为它将+和/替换为url-safe值 - 和_.所以你可能会使用类似的东西:
String encodedString = new String(Base64.encodeBase64('string to encode'));
String safeString = encodedString.replace('+','-').replace('/','_');
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
小智 16
你不必使用apache commons,在android上你可以使用android.util.Base64代替.
您可以使用以下功能:
private static String encodeBase64URLSafeString(byte[] binaryData) {
return android.util.Base64.encodeToString(binaryData, Base64.URL_SAFE);
}
Run Code Online (Sandbox Code Playgroud)
来源+其他可能的标志列表:http://developer.android.com/reference/android/util/Base64.html
您可以简单地从 apache 库中复制此代码位(它非常孤立)
http://www.java2s.com/Open-Source/Android/Blog-Twitter/twitspeak/org/apache/commons/codec/binary/Base64 .java.htm
编辑: 来自 Wayback Machine 的更新链接,因为原始链接已经消失:http ://web.archive.org/web/20130610025148/http: //www.java2s.com/Open-Source/Android/Blog-Twitter/twitspeak/ org/apache/commons/codec/binary/Base64.java.htm
我对同一问题的解决方案是将有问题的类重命名org.apache.commons.codec.binary.Base64.java为org.apache.commons.codec.binary.ApacheBase64.java. 我使用 Eclipse refactor-rename 做到了。
这样,最新和最好的 apache 解决方案被保留和使用,并且当我的应用程序最终从 android 1.6 最低分母中解除时,不会有意外问题再次发生的机会。
注意我已经将整个 apache commons 源树设置为单独的 Eclipse java 项目,在我的 Android 项目旁边。我的 Android 项目使用了许多 Apache Commons 类,但由于上述问题在 Base64 上失败了......
| 归档时间: |
|
| 查看次数: |
55118 次 |
| 最近记录: |