2016-02-25 4 views
0

Использование результатов okhttp-3.0.1.jar в аварии:java.lang.NoClassDefFoundError: сбой разрешения: Lokhttp3/MediaType;

02-25 17:44:33.279: E/AndroidRuntime(30263): FATAL EXCEPTION: main 
02-25 17:44:33.279: E/AndroidRuntime(30263): Process:com.littleapproom.diamondapp, PID: 30263 
02-25 17:44:33.279: E/AndroidRuntime(30263):java.lang.NoClassDefFoundError: Failed resolution Lokhttp3/MediaType; 
02-25 17:44:33.279: E/AndroidRuntime(30263): at com.littleapproom.diamondapp.helper.ServiceTask.<clinit>(ServiceTask.java:68) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at com.littleapproom.diamondapp.RegisterActivity.callRegisterApi(RegisterActivity.java:74) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at com.littleapproom.diamondapp.RegisterActivity.onClick(RegisterActivity.java:50) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at android.view.View.performClick(View.java:4785) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at android.view.View$PerformClick.run(View.java:19884) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at android.os.Handler.handleCallback(Handler.java:739) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at android.os.Handler.dispatchMessage(Handler.java:95) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at android.os.Looper.loop(Looper.java:135) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at android.app.ActivityThread.main(ActivityThread.java:5343) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at java.lang.reflect.Method.invoke(Native Method) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at java.lang.reflect.Method.invoke(Method.java:372) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 
02-25 17:44:33.279: E/AndroidRuntime(30263): Caused by: java.lang.ClassNotFoundException: Didn't find class "okhttp3.MediaType" on path: DexPathList[[zip file "/data/app/com.littleapproom.diamondapp-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
02-25 17:44:33.279: E/AndroidRuntime(30263): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
02-25 17:44:33.279: E/AndroidRuntime(30263): at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
02-25 17:44:33.279: E/AndroidRuntime(30263): ... 13 more 
02-25 17:44:33.279: E/AndroidRuntime(30263): Suppressed: java.lang.ClassNotFoundException: okhttp3.MediaType 
02-25 17:44:33.279: E/AndroidRuntime(30263):  at java.lang.Class.classForName(Native Method) 
02-25 17:44:33.279: E/AndroidRuntime(30263):  at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
02-25 17:44:33.279: E/AndroidRuntime(30263):  at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
02-25 17:44:33.279: E/AndroidRuntime(30263):  at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
02-25 17:44:33.279: E/AndroidRuntime(30263):  ... 14 more 
    02-25 17:44:33.279: E/AndroidRuntime(30263): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

okhttp-3.0.1.jar прекрасно работает и имеет этот недостающий класс. , пожалуйста, помогите решить проблему.

+0

проверить свои импортные товары –

+0

Вы нашли решение для этого? – dazza5000

+0

Любое решение? То же самое происходит здесь. –

ответ

0

Это, похоже, проблема с системой сборки. Как упоминалось, in this thread на сайте OKHttp, кажется, что OkHttp3 не был включен в одну из библиотек. В моем случае это была проблема с .aar, который я компилировал, а не втягивал библиотеку. Есть несколько способов решить эту проблему, но из того, что я могу сказать, лучше всего подходит для локального репозитория maven: instructions are found in the S/O answer

Кроме того, только что была обнаружена эта команда класса, чтобы скопировать библиотеки в местные для строительства .aar: found on this SO post

с другой информации найти в Интернете:

There is no automated way to package the dependencies of the library inside the aar. This is contrary to proper dependency management and can lead to problems down the line.

If you really want to do this, you'd have to gather the dependencies manually (using code in build.gradle) and manually package the files in the aar.

1

ЭТО НЕ МОЖЕТ БЫТЬ ОТВЕТ. У меня нет достаточного количества комментариев, поэтому я помещаю это в качестве ответа.

Вы импортировали пользовательскую библиотеку, которая может использовать okhttp, или вы используете okhttp в своем проекте напрямую? Я тоже столкнулся с этой проблемой, когда я импортировал библиотеку, которая могла бы использовать okhttp. Я должен явно включить okhttp в мой gradle, чтобы преодолеть эту проблему, хотя я не использовал его в своем коде, но импортированный aar использовал его. Возможно, ваше дело не одно и то же, но поделитесь дополнительной информацией об этом, например, о вашей структуре проекта и соответствующем коде может помочь решить эту проблему.

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

  • Нет связанных вопросов^_^