2014-04-18 4 views
1

Я испытываю это исключение в простом приложении в Android api 19, используя commons-codec-1.9. Кажется, что Android использует старую коллекцию кодеков, но я не могу понять, потому что.NoSuchMethodError: org.apache.commons.codec.binary.Base64.decode на Android

Я 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 Commons Base64 кодек должен использовать тот, который предоставлен android.util.Base64

+0

С точки зрения тестирования модулей, для базового класса Android64 необходимо, чтобы тесты были проверены при тестировании приборов. С точки зрения повторного использования, java-библиотеки должны работать повсюду, а привязка Android к зависимостям является законной проблемой. Простое переключение Base64 не всегда является ответом. –

Смежные вопросы