NoClassDefFoundError nasıl çözülür: Başarısız çözüm: Landroid / view / View $ OnUnhandledKeyEventListener;


92

Android Studio'umu şu şekilde yükselttim:

Android Studio 3.2
Build #AI-181.5540.7.32.5014246, built on September 17, 2018
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.11.6

Boş Aktivite şablonunu kullanarak yeni bir Proje oluşturuyorum

Sync Gradle
Clean
Build
Run

logcat uygulamam bu istisnayı başlangıçta gösteriyor

2018-09-27 13:51:41.116 22090-22090/? I/zygote64: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v4.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:62)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at java.lang.Object java.lang.reflect.Constructor.newInstance0(java.lang.Object[]) (Constructor.java:-2)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:334)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:647)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:790)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:730)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:863)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:824)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:515)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:423)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:374)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.ViewGroup android.support.v7.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:607)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void com.manacle.secondmanacle.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:11)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:7009)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:7000)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1214)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2731)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2856)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread.-wrap11(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1589)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.os.Looper.loop() (Looper.java:164)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/com.manacle.secondmanacle-6Ra5peoMwc4HH30iTlEXCg==/base.apk"],nativeLibraryDirectories=[/data/app/com.manacle.secondmanacle-6Ra5peoMwc4HH30iTlEXCg==/lib/arm64, /system/lib64, /vendor/lib64]]

Android Studio tarafından oluşturulan şablon uygulamasında hiçbir değişiklik yapmadım.

Oluşturma şablonu uygulaması neden temiz başlamıyor?

AndroidX'e geçmeyi denedim, ancak sorun tamamen aynı kalıyor.

Android Studio neden "temiz" bir şablon uygulaması oluşturamıyor?

Gradle dosyalarım şuna benziyor: -

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

====

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.manacle.secondmanacle"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
}

Yanıtlar:


45

Bazen bir yükseltmeden sonra önbelleği geçersiz kılmanız ve temizlemeniz gerekir.

görüntü açıklamasını buraya girin

3.2'de bilinen bazı sorunlar vardır, bu nedenle Kotlin tools org.jetbrains.kotlin'de olmadığınızdan emin olun: kotlin-gradle-plugin: 1.2.70

bu da donma sorunlarına neden olur. Bu işe yaramazsa, google eklenti satırlarınızı kaldırın ve kitaplıkları destekleyin, senkronize edin ve yeniden ekleyin ve senkronize edin. Bazen önbellek dizinleri bozuluyor.


2
harika, senin için çalıştığına sevindim. Kıçımı da defalarca kurtardı;)
Sam

8
Hiçbir şey yardımcı olmuyor. Invalidate Caches / Restart ile deniyorum. Kotlinli ve Kotlinsiz. Android Studio 3.2.1 kullanıyorum.
Bobert

Merhaba @ Bobert, soruyu soran siz değilsiniz, bu yüzden durumunuz hakkında hiçbir fikrim yok. Lütfen senaryonuz, sürümleriniz, araç setleriniz ve hatanızla ilgili bir soru gönderin. Sorunu görürsem yardım etmekten memnuniyet duyarım.
Sam

1
Merhaba @ Sam tam olarak aynı sorun. Yeni bir projekt oluşturup bu yeni projeye başlıyorum ve aynı LogCat bilgileri oluyorum. Ancak 9 Ekim 2018'de oluşturulan Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338'i kullanıyorum JRE: 1.8.0_152-release-1136-b06 amd64 JVM: OpenJDK 64-Bit Server VM by JetBrains sro Windows 7 6.1
Bobert

2
Sorunu issuetracker.google.com/117685087 benden buldum , aynı hatayı yapıyor
Bobert

12

Android x kullanıyorsanız bunu deneyin (bu kod segmentini uygulama düzeyindeki Gradle dosyasına ekleyin)

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == "androidx") {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion "${targetSdk}.+"
        }
    }
}}

android x kullanmıyorsanız bu kod segmentini deneyin.

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == "com.android.support") {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion "26.+"
        }
    }
}}

Teşekkürler, ancak benim için çalışmadı :-( - Android Studio 3.5.3, Build # AI-191.8026.42.35.6010548, 15 Kasım 2019'da oluşturuldu, JRE: 1.8.0_202-release-1483-b49-5587405 amd64 , JVM: OpenJDK 64-Bit Sunucu VM, JetBrains sro, Linux 4.15.0-74-generic
legolas108

1
@ legolas108, uygulamayı oluşturmadan önce Önbellekleri Geçersiz Kıl / IDE'yi Yeniden Başlat, ardından projeyi temizleyin ve uygulama APK'sını yeniden oluşturun. Benim için çalıştı.
ishara weerasekara

1
yardımcı oldu, yeni bir Boş Etkinlik projesi, artık ek talimatlarınızı uyguladıktan sonra bu hata olmadan başlıyor. Çok teşekkürler!
legolas108

Kotlin'deyim ve benim targetSdk: 29için çalışmıyor.
Anbuselvan Rocky

@Anbuselvan Rocky Bu makalenin tartışmanız
ishara weerasekara

8

Androidx bağımlılıkları ile benzer bir sorun var

Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;

Gradle dosyalarına aşağıdaki gibi konfigürasyonlar eklenerek çözüldü

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == "androidx.appcompat") {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion "1.+"
            }
        }
    }
}

benim için de çalıştı Android Studio 4.0.1
AllanRibas

AS 4.1 üzerinde çalıştı. Diğer noobs için, bunu modülün build.gradle'ına ekledim (uygulama klasörünün içindeki).
Lodovik

3

Bunu build.gradle dosyamın altına yapıştırarak benzer bir sorunu çözdüm

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == "com.android.support") {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion "26.+"
            }
        }
    }
}

https://github.com/facebook/flipper/issues/146


15
Bunun ne yaptığını açıklayabilir misin?
Dan Loewenherz

1
androidx / appcompat bağımlılık kitaplıklarını belirli bir sdk çalışma zamanı seviyesini hedeflemeye zorluyor.
ShellDude

bu işe yaramıyor, BTW. buraya bakın: stackoverflow.com/questions/51782548/…
ShellDude

3

Bu hata bir tuzak olabilir. Benim durumumda, gerçek hatanın Resources$NotFoundExceptionyığın izlemede bir yerde olduğu ortaya çıktı . Bir <androidx.appcompat.widget.AppCompatImageViewile değiştirdiğimde ImageView, çözülmesi kolay olan okunabilir bir hata aldım.


3

Sorunum, şişirilmekte olan düzendeki görünüm öğelerinden biri için build.gradle'da androidx içe aktarımı eksikti. Eklemek implementation 'androidx.drawerlayout:drawerlayout:1.0.0 'özel sorunumu çözdü. Ana Aktivitenizin düzeninde içe aktarılmayan bazı androidx görünümü olduğunu hayal ediyorum. Tüm farklı paketler ve sürümler https://maven.google.com/web/index.html adresindedir , eksik olduğunuz öğeyi bulun ve modülünüzün build.gradle içindeki bağımlılıklara ekleyin.


2

Benzer bir sorunu çözdüm

Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
 
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener"

Build.gradle'da bağımlılık ekleme (uygulama düzeyi)

implementation 'androidx.core:core:1.5.0-alpha04'

1

Aynı istisna ile mücadele ettim, ancak yalnızca uygulamamı gerçek bir cihazda (Samsung Galaxy S9) test ederken. Aynı uygulama sanal cihazlarda sorunsuz çalışıyordu. Build.gradle yapılandırma değişikliği çözülmediğinden, ana faaliyetimi AppCompatActivity'den Activity'e taşıyarak sorunu çözdüm. Aktivitenizi düşürmek gibi görünebilirim, ancak gelişmiş aktivite özelliklerini kullanmıyorsanız - Şuna bakın ( https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity ) - bu gerçek bir sorun değil.

//import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;

public class MainActivity /*extends AppCompatActivity*/ extends Activity
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.