web-dev-qa-db-fra.com

EXCEPTION FATALE: Java.lang.NoClassDefFoundError: Android.support.v7.appcompat.R $ layout

Je viens de migrer d'Eclipse vers le studio. J'ai suivi un blog pour exporter un projet d'Eclipse vers un studio. L'application fonctionne bien dans Lollipop et jette l'erreur suivante dans les appareils pré Lollipop. 

Obtenir cette erreur uniquement en studio. pas dans Eclipse.

FATAL EXCEPTION: main
    Java.lang.NoClassDefFoundError: Android.support.v7.appcompat.R$layout
            at Android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.Java:324)
            at Android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.Java:246)
            at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:106)
            at com.hsp.inventory.SplashActivity.onCreate(SplashActivity.Java:53)
            at Android.app.Activity.performCreate(Activity.Java:5122)
            at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1081)
            at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2270)
          //
          ......
          //

Mon dossier

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven {
            url "http://dl.bintray.com/journeyapps/maven"
        }
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:1.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

apply plugin: 'com.Android.application'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.Android.gms:play-services:7.5.0'
    compile 'com.Android.support:design:22.2.0'
    compile 'com.Android.support:appcompat-v7:22.2.0'
    compile 'com.Android.support:cardview-v7:22.2.0'
    compile 'com.Android.support:recyclerview-v7:22.2.0'
    compile 'com.google.code.gson:gson:2.3'
   // compile "com.Android.support:support-v4:18.0.+"

    compile project(':sliderLibrary')
    compile project(':camera')
    compile project(':volley')

    // Zxing library compile

    compile 'com.journeyapps:zxing-Android-embedded:2.3.0@aar'
    compile 'com.journeyapps:zxing-Android-legacy:2.3.0@aar'
    compile 'com.journeyapps:zxing-Android-integration:2.3.0@aar'
    compile 'com.google.zxing:core:3.2.0'

}


Android {

    compileSdkVersion 22
    buildToolsVersion '22.0.1'

    defaultConfig {
        applicationId "com.hsp.inventory"
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }


    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            Java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets', 'src/main/assets', 'src/main/assets/fonts']
        }

        instrumentTest.setRoot('tests')


        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

S'il vous plaît laissez-moi savoir si vous voulez jeter un oeil à mon manifeste et act_splash.xml. Je vais mettre à jour ici. 

Une idée?

17
Rethinavel Pillai

J'ai fait face au même problème et je l'ai corrigé ... C'est un problème avec la limite Dex. La limite de dex étant atteinte, deux fichiers dex sont créés. Lollipop sait lire, pré-Lollipop n’a aucune idée si vous ne le spécifiez pas dans la classe Application.

Veuillez vous assurer que ce qui suit est en place:

dans build.gradle

dependencies {
    compile 'com.Android.support:multidex:1.0.0'
}
defaultConfig {          
    multiDexEnabled true
}

IMPORTANT pour soutenir la pré-Lollipop:

Dans Manifest, sous la balise d'application,

<application
        ...
        Android:name="Android.support.multidex.MultiDexApplication">
        ...
</application>

Ou, si vous avez utilisé votre propre classe Application, Modifiez votre Application pour remplacer attachBaseContext en commençant par

 import Android.support.multidex.MultiDexApplication;
 import Android.support.multidex.MultiDex;

 public class MyApplication extends MultiDexApplication {
 // ......

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

Référence: https://developer.Android.com/tools/building/multidex.html#mdex-gradle

76
Ramesh

Votre logcat retourne

Java.lang.NoClassDefFoundError: Android.support.v7.appcompat

Mettez donc à jour votre référentiel de support (version 23) Et ** Pour l'API 23: **

compile 'com.Android.support:appcompat-v7:23.0.0'
1
IntelliJ Amiya

Dans la documentation Android pour v7 appcompat Se trouve une note:

Remarque: cette bibliothèque dépend de la bibliothèque de support v4. Si vous utilisez Ant ou Eclipse, veillez à inclure la v4 Support Library dans le composant du classpath de cette bibliothèque.

Je pense que c’est votre problème puisque vous avez commenté la ligne dans votre note:

   // compile "com.Android.support:support-v4:18.0.+"

Ajoutez à nouveau la ligne et essayez de compiler le projet.

De plus, je ne vois pas de ligne com.Android.support:appcompat-v7:21.0.0 dans votre note

0
Zelldon

Peut-être une longue photo, mais assurez-vous que vos images sont sous/res/drawable et non /res/drawable-v24Voir cette réponse: Ligne de fichier XML binaire # 0: Erreur lors du gonflage de la classe ImageView

0
kurdtpage

Comme je peux le voir, le fichier Gradle que vous avez posté ici est un fichier Gradle de niveau supérieur, qui contient des éléments qui ne devraient pas être présents. Remplacez le contenu de votre fichier de niveau supérieur comme ci-dessous:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven {
            url "http://dl.bintray.com/journeyapps/maven"
        }
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:1.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
0
Amar