NoClassDefFoundError 해결 방법 : 해결 실패 : Landroid / view / View $ OnUnhandledKeyEventListener;


92

내 Android Studio를 다음으로 업그레이드했습니다.

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

빈 활동 템플릿을 사용하여 새 프로젝트를 만듭니다.

Sync Gradle
Clean
Build
Run

내 응용 프로그램 logcat은 시작 시이 예외를 보여줍니다.

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에서 생성 한 템플릿 앱을 변경하지 않았습니다.

템플릿 생성 앱이 제대로 시작되지 않는 이유는 무엇입니까?

androidX로 마이그레이션을 시도했지만 문제는 그대로 유지됩니다.

Android Studio가 "깨끗한"템플릿 애플리케이션을 생성 할 수없는 이유는 무엇입니까?

내 gradle 파일은 다음과 유사합니다.

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'
}

답변:


45

때때로 업그레이드 후에 캐시를 무효화하고 지워야합니다.

여기에 이미지 설명 입력

3.2에는 몇 가지 알려진 문제가 있으므로 Kotlin 도구 org.jetbrains.kotlin : kotlin-gradle-plugin : 1.2.70에 있지 않은지 확인하세요.

동결 문제도 발생합니다. 그래도 작동하지 않으면 Google 플러그인 라인과 지원 라이브러리를 제거하고 동기화하고 다시 추가 한 다음 동기화하십시오. 때로는 캐시 디렉토리가 엉망이됩니다.


2
굉장하고, 그것이 당신을 위해 일했다는 것을 기쁘게 생각합니다. 내 엉덩이도 여러 번 저장되었습니다.)
Sam

8
도움이되지 않습니다. 캐시 무효화 / 다시 시작으로 시도합니다. Kotlin 유무. Android Studio 3.2.1이 있습니다.
Bobert

안녕하세요 @Bobert, 당신은 질문을 한 사람이 아니므로 당신의 상황이 무엇인지 모르겠습니다. 시나리오, 버전, 도구 세트 및 오류와 함께 질문을 게시 해 주시면 문제가 발견되면 기꺼이 도와 드리겠습니다.
Sam

1
안녕하세요 @Sam 정확히 같은 문제입니다. 나는 새 프로젝트를 만들고이 새 프로젝트를 시작하고 동일한 LogCat 정보가됩니다. 하지만 2018 년 10 월 9 일에 빌드 된 Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338을 사용합니다. JRE : 1.8.0_152-release-1136-b06 amd64 JVM : JetBrains sro Windows 7 6.1의 OpenJDK 64 비트 서버 VM
Bobert

2
내 문제를 발견했습니다 issuetracker.google.com/117685087 같은 오류가 발생합니다
Bobert

12

android x를 사용하는 경우 이것을 시도하십시오 (이 코드 세그먼트를 앱 수준 Gradle 파일에 추가하십시오)

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

Android x를 사용하지 않는 경우이 코드 세그먼트를 사용해보세요.

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

감사합니다.하지만 저에게는 작동하지 않았습니다 :-(-Android Studio 3.5.3, Build # AI-191.8026.42.35.6010548, 2019 년 11 월 15 일에 빌드 됨, JRE : 1.8.0_202-release-1483-b49-5587405 amd64 , JVM : JetBrains sro의 OpenJDK 64 비트 서버 VM, Linux 4.15.0-74-generic
legolas108

1
@ legolas108, 애플리케이션을 빌드하기 전에 캐시 무효화 / IDE 다시 시작 후 프로젝트를 정리하고 애플리케이션 APK를 다시 빌드하십시오. 그것은 나를 위해 일했습니다.
ishara weerasekara

1
도움이 되었기 때문에 수정하지 않은 새 빈 활동 프로젝트는 이제 추가 지침을 따른 후이 오류없이 시작됩니다. 고맙습니다!
legolas108

저는 Kotlin을 사용 중이며 targetSdk: 29제게 작동하지 않습니다.
Anbuselvan Rocky

@Anbuselvan 록키 난 당신이 문서가 도움이 될 것이라고 생각 discuss.kotlinlang.org/t/kotlin-dependencies-in-gradle-projects/...
ishara의 weerasekara

8

androidx 종속성과 비슷한 문제가 있습니다.

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 파일에 구성을 추가하여 해결되었습니다.

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

그것은 나에게도 효과가 있었다 Android Studio 4.0.1
AllanRibas

AS 4.1에서 작업했습니다. 동료 멍청이 를 위해 모듈의 build.gradle (앱 폴더 안에있는 것)에 이것을 추가했습니다 .
Lodovik

3

내 build.gradle 파일 하단에 이것을 붙여 넣어 비슷한 문제를 해결했습니다.

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
이것이 무엇을하는지 설명해 주시겠습니까?
Dan Loewenherz

1
androidx / appcompat 종속성 라이브러리가 특정 SDK 런타임 수준을 대상으로하도록 강제합니다.
ShellDude

작동하지 않습니다, BTW. 여길 봐: stackoverflow.com/questions/51782548/…
ShellDude

3

이 오류는 미끼 일 수 있습니다. 제 경우에는 실제 오류가 Resources$NotFoundException스택 트레이스 어딘가에있는 것으로 판명되었습니다 . 내가 대체 할 때 <androidx.appcompat.widget.AppCompatImageViewImageViewI는 해결하기가 쉽고 읽을 수있는 오류가 발생했습니다.


3

내 문제는 부풀려진 레이아웃의 뷰 요소 중 하나에 대한 build.gradle의 androidx 가져 오기가 누락되었습니다. 추가하면 implementation 'androidx.drawerlayout:drawerlayout:1.0.0 '내 특정 문제가 해결되었습니다. 가져 오지 않은 Main Activity의 레이아웃 내부에 androidx 뷰가 있다고 생각합니다. 다양한 패키지 및 버전은 모두 https://maven.google.com/web/index.html 에 있습니다. 누락 된 항목을 찾아 모듈의 build.gradle에있는 종속성에 추가하면됩니다.


2

비슷한 문제를 해결했습니다

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 (앱 수준)에 종속성 추가

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

1

나는 동일한 예외로 고생했지만 실제 장치 (Samsung Galaxy S9)에서 내 응용 프로그램을 테스트 할 때만 고생했습니다. 동일한 응용 프로그램이 가상 장치에서 제대로 실행되었습니다. build.gradle 구성 변경이 해결되지 않았기 때문에 주요 활동을 AppCompatActivity에서 활동으로 이동하여 문제를 해결했습니다. 활동을 다운 그레이드하는 것처럼 들리지만 고급 활동 기능을 사용하지 않는 경우-여기를 참조하십시오 ( https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity)- 실제 문제가 아닙니다.

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

public class MainActivity /*extends AppCompatActivity*/ extends Activity
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.