Java.lang.NoClassDefFoundError: сбой разрешения: Landroid/support/v4/os/BuildCompat

Я обновил библиотеки AppCompat до 24.2.1 и SDK до Android 7 в моей установке Eclipse. С тех пор я не могу запускать ни одно из моих приложений. Я ценю, если вы можете немного помочь с этим...

E/AndroidRuntime(17555): java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/os/BuildCompat;
E/AndroidRuntime(17555):    at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:196)
E/AndroidRuntime(17555):    at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:181)
E/AndroidRuntime(17555):    at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:521)
E/AndroidRuntime(17555):    at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
E/AndroidRuntime(17555):    at com.ryosoftware.calendareventsnotifier.MainActivity.onCreate(MainActivity.java:844)
E/AndroidRuntime(17555):    at android.app.Activity.performCreate(Activity.java:5990)
E/AndroidRuntime(17555):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
E/AndroidRuntime(17555):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)
E/AndroidRuntime(17555):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)
E/AndroidRuntime(17555):    at android.app.ActivityThread.access$900(ActivityThread.java:154)
E/AndroidRuntime(17555):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
E/AndroidRuntime(17555):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(17555):    at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(17555):    at android.app.ActivityThread.main(ActivityThread.java:5294)
E/AndroidRuntime(17555):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(17555):    at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(17555):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
E/AndroidRuntime(17555):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
E/AndroidRuntime(17555): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.os.BuildCompat" on path: DexPathList[[zip file "/data/app/com.ryosoftware.calendareventsnotifier-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
E/AndroidRuntime(17555):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E/AndroidRuntime(17555):    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
E/AndroidRuntime(17555):    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
E/AndroidRuntime(17555):    ... 18 more
E/AndroidRuntime(17555):    Suppressed: java.lang.ClassNotFoundException: android.support.v4.os.BuildCompat
E/AndroidRuntime(17555):        at java.lang.Class.classForName(Native Method)
E/AndroidRuntime(17555):        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
E/AndroidRuntime(17555):        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
E/AndroidRuntime(17555):        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
E/AndroidRuntime(17555):        ... 19 more
E/AndroidRuntime(17555):    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Ответ 1

Вы получаете NoClassDefFoundError & ClassNotFoundException

NoClassDefFoundError в Java возникает, когда виртуальная машина Java не может найти определенный класс во время выполнения, который был доступен во время компиляции.

FYI

Вы используете Eclipse. Android Studio - гораздо более простой способ разработки для Android, если вам удастся освоить его. Для разработчиков, использующих Eclipse, переход на Studio - это кошмар для них. Затмение умерло (Мое личное мнение).

Для вашей проблемы NoClassDefFoundError перейдите к параметру перестроения в Project > Clean и затем выберите проект, который вы хотите очистить. Затем перезапустите Eclipse и запустите снова.

Решения

Проверьте, что ваш classpath содержит этот jar (AppCompat), если ваш classpath не содержит jar, просто добавьте этот класс в ваш classpath.

Вы должны использовать Android Studio вместо Eclipse. Читать

  1. Поддержка библиотеки Особенности

Идентификатор зависимости скрипта сборки Gradle для этой библиотеки выглядит следующим образом:

com.android.support:appcompat-v7:24.2.1

Затем Clean-Rebuild-Restart IDE

Ответ 2

В моем случае

  • чистый проект
  • аннулировать и перезапустить

работает

Ответ 3

Другая неприятная причина, по которой это может быть вызвано, заключается в том, что вы пытаетесь подключить отладчик с точкой останова к тому, что происходит во время создания Activity.

Ответ 4

В моем случае ошибка была вызвана использованием всей библиотеки gm: play-services. Некоторые компоненты gms: play-services относятся к версиям, отличным от явно указанных вами.

Используйте только необходимые игровые сервисы, которые необходимы, например: "com.google.android.gms: play-services-analytics: 10.2.0" вместо "com.google.android.gms: play-services: 10.2 +0,0'.

Также см.: Все библиотеки com.android.support должны использовать ту же самую спецификацию версии

Хорошо читать: https://blog.mindorks.com/avoiding-conflicts-in-android-gradle-dependencies-28e4200ca235

Ответ 5

Я добавил два класса в свой пакет Java, и он работает нормально, оставьте оба класса, как показано на рисунке ниже:

enter image description here

AsyncTaskCompat.java

public class AsyncTaskCompat {

/**
 * Executes the task with the specified parameters, allowing multiple tasks to run in parallel
 * on a pool of threads managed by {@link android.os.AsyncTask}.
 *
 * @param task The {@link android.os.AsyncTask} to execute.
 * @param params The parameters of the task.
 * @return the instance of AsyncTask.
 */
public static <Params, Progress, Result> AsyncTask<Params, Progress, Result> executeParallel(
        AsyncTask<Params, Progress, Result> task, Params... params) {
    if (task == null) {
        throw new IllegalArgumentException("task can not be null");
    }

    if (Build.VERSION.SDK_INT >= 11) {
        // From API 11 onwards, we need to manually select the THREAD_POOL_EXECUTOR
        AsyncTaskCompatHoneycomb.executeParallel(task, params);
    } else {
        // Before API 11, all tasks were run in parallel
        task.execute(params);
    }

    return task;
}
}

AsyncTaskCompatHoneycomb.java

class AsyncTaskCompatHoneycomb {

static <Params, Progress, Result> void executeParallel(
        AsyncTask<Params, Progress, Result> task, Params... params) {
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
}

Ответ 6

public class MApplication extends Application {

    @Override
    protected void attachBaseContext(Context paramContext) {
        super.attachBaseContext(paramContext);
        Helper.install(MApplication.this);
    }
}

Здесь мы переопределяем метод attachBaseContext(), чтобы добавить Helper.install(MApplication.this); строка кода.

Примечание. Поскольку некоторые классы SDK теперь необходимо загрузить перед использованием, процесс загрузки выполняется с помощью Helper.install(). Разработчик должен вызвать этот метод перед использованием любой функциональности SDK. Невыполнение этого требования приведет к неожиданным сбоям. ссылка

Если приложение не падает с java.lang.NoClassDefFoundError: Ошибка разрешения:....

Ответ 7

Обновите реализацию com.google.android.gms: play-services-maps в Gradle до более новой версии.

Это работает для меня.

Ответ 8

Гугл перегорел.. опять система сборки gradle.
Они беспокоят всех пользователей андроид-студии своей системой, похожей на proguard, которая просто не работает, как все, что исходит от Google в первый раз.
Понадобится много времени, чтобы понять, что они пропустили.
Время от времени я не могу просто использовать разработку вместе с Google в одном предложении, извините.
После долгой расплаты с их библиотеками поддержки, они теперь концентрируют свою энергию, чтобы преобразовать систему сборки в нерабочее дерьмо. В качестве поддержки библиотеки скоро устареют.
На самом деле одна из часто обсуждаемых функций от Google, кажется, работает после многих лет исправления, называемая JustInTime и Instant run. Но время от времени вызывает исключение или неправильно строить тоже.
Решение состоит в том, чтобы СКАЧАТЬ сборочную систему Gradle, если это произойдет. Особенно для androidX компонентов и т.д.
Их система просто удаляет все ваши классы из apk, даже те же пакеты. Надеюсь, что это поможет даже одному разработчику, который тратит 1/7 дня ТОЛЬКО на build apk из вчерашнего рабочего источника.

Попробуйте это также:

@Override
public boolean onUnhandledKeyEvent(View v, KeyEvent event) {
    //anything, this will be never raised and cause Exception
}



BR