2014-04-18 67 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實現並不總是一個答案。 –