NoClassDefFoundErrorを解決する方法:失敗した解決:Landroid / view / View $ OnUnhandledKeyEventListener;


95

AndroidStudioをにアップグレードしました

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]]

AndroidStudioで生成されたテンプレートアプリに変更を加えていません。

テンプレートの生成アプリが正常に起動しないのはなぜですか?

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

回答:


48

アップグレード後、キャッシュを無効にしてクリアする必要がある場合があります。

ここに画像の説明を入力してください

3.2にはいくつかの既知の問題があるため、Kotlinツールを使用していないことも確認してくださいorg.jetbrains.kotlin:kotlin-gradle-plugin:1.2.70

フリーズの問題も発生します。それが機能しない場合は、Googleプラグインの行とサポートライブラリを削除し、同期して再度追加し、同期します。時々、キャッシュディレクトリはただ強打から抜け出します。


2
素晴らしい、それがあなたのために働いてうれしいです。それは私のお尻も何度も救われました;)
サム

9
何の助けもありません。キャッシュの無効化/再起動を試してみました。Kotlinの有無にかかわらず。Android Studio3.2.1を使用しています。
ボバート

こんにちは@Bobert、あなたは質問をした人ではないので、私はあなたの状況が何であるかわかりません。シナリオ、バージョン、ツールセット、エラーについて質問を投稿してください。問題が発生した場合は、喜んでサポートさせていただきます。
サム

1
こんにちは@Samそれはまったく同じ問題です。新しいプロジェクトを作成し、この新しいプロジェクトを開始して、同じLogCat情報になります。しかし、私はAndroid Studio 3.2.1ビルド#AI-181.5540.7.32.5056338を使用しています。これは2018年10月9日にビルドされました。JRE:1.8.0_152-release-1136-b06 amd64 JVM:OpenJDK64ビットサーバーVMby JetBrains sro Windows 7 6.1
ボバート2018年

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、ビルド#AI-191.8026.42.35.6010548、2019年11月15日にビルド、JRE:1.8.0_202-release-1483-b49-5587405 amd64 、JVM:JetBrainssroによるOpenJDK64ビットサーバーVM、Linux 4.15.0-74-generic
legolas1 0820年

1
@ legolas108、アプリケーションをビルドする前に、キャッシュを無効化/ IDEを再起動してから、プロジェクトをクリーンアップし、アプリケーションAPKを再構築します。それは私のために働いた。
isharaweerasekara20年

1
これにより、追加の指示に従った後、変更のない新しい空のアクティビティプロジェクトがこのエラーなしで開始されるようになりました。どうもありがとう!
legolas1 0820

私はKotlinを使用していますがtargetSdk: 29、機能しません。
アンブセルバンロッキー

@AnbuselvanRockyこの記事はあなたの議論に
t /

9

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.+"
            }
        }
    }
}

AS4.1で動作しました。仲間の初心者のために、これをモジュールのbuild.gradle(appフォルダー内のもの)に追加しました。
Lodovik

これは本当に機能します、理由を説明できますか?
アモス

1
このコードスニペットを追加するのではなく、より良い解決策を得ました。stackoverflow.com/ a / 65217631/3260008
Amos

6

私は同様の問題を解決しました

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'

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
これが何をしているのか説明できますか?
DanLoewenherz19年

1
androidx / appcompat依存関係ライブラリに特定のSDKランタイムレベルをターゲットにするように強制しています。
ShellDude

ところで、これは機能しません。こちらをご覧ください: stackoverflow.com/questions/51782548/...
ShellDude

3

このエラーはおとりである可能性があります。私の場合、実際のエラーResources$NotFoundExceptionはスタックトレースのどこかにあることがわかりました。をに置き換える <androidx.appcompat.widget.AppCompatImageViewImageView、読み取り可能なエラーが発生し、簡単に解決できました。


3

私の問題は、膨らんでいたレイアウトのビュー要素の1つに対するbuild.gradleにandroidxインポートがないことでした。追加するとimplementation 'androidx.drawerlayout:drawerlayout:1.0.0 '、私の特定の問題が修正されました。メインアクティビティのレイアウト内にインポートされていないandroidxビューがあると思います。さまざまなパッケージとバージョンはすべてhttps://maven.google.com/web/index.htmlにあります。不足しているアイテムを見つけて、モジュールのbuild.gradleの依存関係に追加するだけです。


3

これを追加するgradleと、問題が解決します。

implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'

1.2.0でも動作しないことに注意してください


1

私は同じ例外で苦労しましたが、実際のデバイス(Samsung Galaxy S9)でアプリケーションをテストしたときだけでした。同じアプリケーションが仮想デバイスで正常に実行されていました。build.gradleの構成変更が解決されなかったため、メインアクティビティをAppCompatActivityからActivityに移動することで問題を回避しました。アクティビティをダウングレードしているように聞こえますが、高度なアクティビティ機能を使用していない場合は、こちら(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.