2014-04-18 33 views
1

我正在使用commons-codec-1.9在Android api 19中的一个简单应用中遇到此异常。 似乎Android使用旧的公用编解码器库,但我不明白,因为。NoSuchMethodError:Android上的org.apache.commons.codec.binary.Base64.decode

我usign Android的工作室和我gradle这个文件包含此:

dependencies { 
compile 'com.android.support:appcompat-v7:+' 
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar']) 
} 

的例外,我有:

java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.decode   
     at com.SplashActivity.onCreate(SplashActivity.java:32) 
     at android.app.Activity.performCreate(Activity.java:5241) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2248) 
     at android.app.ActivityThread.access$800(ActivityThread.java:138) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5050) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
     at dalvik.system.NativeStart.main(Native Method) 

感谢

+0

这是一个老问题,但Google给我带来了在这之前我找到了答案。虽然在文档中没有详细说明,但Android显然包含了至少一些Apache Commons库的旧版本,并且这些库优先。我从来没有看到明确的答案,如果你可以覆盖它们,但我通过重构包名称并使用它们来解决问题。 – tstaylor7

回答

-1

而不是使用Apache的百科全书Base64编码的编解码器,你应该使用android.util.Base64提供的那个

+0

从单元测试的角度来看,Android Base64类需要在仪器测试下进行测试。从可重用性的角度来看,java库应该可以在任何地方工作,Android依赖依赖关系是一个合理的问题。简单地切换Base64实现并不总是一个答案。 –