java.lang.NoClassDefFoundError: Не удалось разрешить: Lokhttp3/MediaType;

Использование okhttp-3.0.1.jar приводит к сбою:

 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 работает нормально и не имеет этого класса. пожалуйста, помогите для решения.


person Prabal.PX    schedule 25.02.2016    source источник
comment
Вы нашли решение для этого?   -  person dazza5000    schedule 07.03.2016
comment
Любое решение? То же самое происходит и здесь.   -  person Sandro Simas    schedule 13.04.2016


Ответы (2)


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

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

person Amruta-Pani    schedule 16.11.2016

Похоже, это проблема системы сборки. Как упоминалось в этой ветке на сайте OKHttp, кажется, что OkHttp3 не был включен в одна из используемых библиотек. В моем случае это была проблема с .aar, который я компилировал, а не с библиотекой. Есть несколько способов решить эту проблему, но, насколько я могу судить, лучше всего строить в локальном репозитории maven: инструкции найдено в ответе S/O

Кроме того, только что обнаружена эта команда Grade для копирования библиотек на ваш локальный сервер для создания .aar: находится в этом сообщении SO

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

Нет автоматического способа упаковать зависимости библиотеки внутри файла aar. Это противоречит правильному управлению зависимостями и может привести к проблемам в будущем.

Если вы действительно хотите это сделать, вам придется собирать зависимости вручную (используя код в build.gradle) и вручную упаковывать файлы в файл aar.

person AllDayAmazing    schedule 31.05.2016