web-dev-qa-db-fra.com

Android ClassNotFoundException: la classe n'a pas été trouvée sur le chemin

Je ne trouve pas la solution à cette erreur.Pouvez-vous s'il vous plaît donner la solution permanente.Je ne sais pas comment le résoudre peut vous aider .Merci

01-04 11:06:42.302: E/AndroidRuntime(1906): Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{e.gochat/e.gochat.gochat.MainActivity}: Java.lang.ClassNotFoundException: Didn't find class "e.gochat.gochat.MainActivity" on path: DexPathList[[Zip file "/data/app/e.gochat-1.apk"],nativeLibraryDirectories=[/data/app-lib/e.gochat-1, /vendor/lib, /system/lib]]
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2102)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2226)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Android.app.ActivityThread.access$700(ActivityThread.Java:135)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1397)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Android.os.Handler.dispatchMessage(Handler.Java:102)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Android.os.Looper.loop(Looper.Java:137)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Android.app.ActivityThread.main(ActivityThread.Java:4998)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Java.lang.reflect.Method.invokeNative(Native Method)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Java.lang.reflect.Method.invoke(Method.Java:515)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:777)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:593)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at dalvik.system.NativeStart.main(Native Method)
01-04 11:06:42.302: E/AndroidRuntime(1906): Caused by: Java.lang.ClassNotFoundException: Didn't find class "e.gochat.gochat.MainActivity" on path: DexPathList[[Zip file "/data/app/e.gochat-1.apk"],nativeLibraryDirectories=[/data/app-lib/e.gochat-1, /vendor/lib, /system/lib]]
01-04 11:06:42.302: E/AndroidRuntime(1906):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:56)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Java.lang.ClassLoader.loadClass(ClassLoader.Java:497)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Java.lang.ClassLoader.loadClass(ClassLoader.Java:457)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Android.app.Instrumentation.newActivity(Instrumentation.Java:1061)
01-04 11:06:42.302: E/AndroidRuntime(1906):     at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2093)
01-04 11:06:42.302: E/AndroidRuntime(1906):     ... 11 more
01-04 11:07:06.772: I/Process(1906): Sending signal. PID: 1906 SIG: 9

Ceci est mon application Manifest XML

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="e.gochat"
Android:versionCode="1"
Android:versionName="1.0" >

<uses-sdk
    Android:minSdkVersion="9"
    Android:targetSdkVersion="18" />
<permission
    Android:name="e.gochat.permission.C2D_MESSAGE"
    Android:protectionLevel="signature" />

<uses-permission Android:name="e.gochat.permission.C2D_MESSAGE" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.GET_ACCOUNTS" />
<uses-permission Android:name="Android.permission.WAKE_LOCK" />
<uses-permission Android:name="com.google.Android.c2dm.permission.RECEIVE" />
<uses-permission Android:name="Android.permission.READ_CONTACTS" />

<application
    Android:name="e.gochat.Common"
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >


    <activity
        Android:name="e.gochat.MainActivity">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
     <activity Android:name="e.gochat.ChatActivity" 
        />
    <activity
        Android:name="e.gochat.SettingsActivity"
        Android:label="@string/title_activity_settings" />
    <receiver
        Android:name="e.gochat.client.GcmBroadcastReceiver"
        Android:permission="com.google.Android.c2dm.permission.SEND" >
        <intent-filter>
            <action Android:name="com.google.Android.c2dm.intent.RECEIVE" />

            <category Android:name="e.gochat" />
        </intent-filter>
    </receiver>
    <provider
        Android:name="e.gochat.DataProvider"
        Android:authorities="e.gochat.provider" 
        Android:exported="false">
    </provider>


</application>

Je ne suis pas sûr de ce qui ne va pas ici. J'ai ajouté le fichier .jar dans le chemin de construction Java. Et pourtant, je reçois cette exception classnotfound. L'application se charge lors de l'importation du fichier Android.app.Application.

40
user3129072

Je ne sais pas vraiment quel est le nom de votre paquet, mais si c'est e.gochat fais ça.

Ajouter package="e.gochat" à manifest.xml

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="e.gochat"
    .....
    .....
         >

Sur chaque déclaration d'activité pour Android:name mettez un point avant le nom de l'activité:

<activity
    Android:name=".MainActivity">
............
</activity>

<activity 
    Android:name=".ChatActivity">

EDIT

Après votre édition, je peux voir e.gochat est le nom de votre paquet.
Il ne vous reste plus qu'à supprimer e.gochat de chaque activité/nom du fournisseur/destinataire, comme je l’ai dit dans la deuxième partie de ma réponse.
Android l'ajoutera pour vous.

31
ramaral

J'ai résolu ce problème en désactivant l'option d'exécution instantanée de Android studio. Pour désactiver Instant Run Goto File -> Paramètres -> Construire, Exécution, Déploiement -> Instant Run -> Décochez la case correspondante. course instantanée

36
Kishor N R

tilisation de Android Studio

Après la mise à niveau vers Android Stuido 0.8.2, j’avais ce problème. J'ai essayé beaucoup de choses, y compris

  • Projet propre
  • Projet propre (nettoyage propre)
  • Invalider les caches et redémarrer
  • Désqualifier le nom de l'activité dans AndroidManifest.xml (.MyActivity)

Rien n'a fonctionné tant que je n'ai pas réimporté l'intégralité du projet.

File -> Close Project -> Import Project... -> Choose the same project -> OK

Cela a résolu le problème pour moi

11
styler1972

La désinstallation de l'application sur l'appareil et la réexécution du projet ont résolu le problème pour moi.

10
live-love

Pour moi, cela se produisait sur des appareils exécutant <Android 5.0 car je n'avais pas support multidex activé (c'est-à-dire plus de 65 000 méthodes au total, y compris les bibliothèques). Multidex est automatique et natif sur Android 5.0+ (en particulier, les appareils utilisant ART ).

9
Tom Redman

La raison pour laquelle cela me concernait était due à un nom de chemin incorrect dans un fichier de présentation

<Android.support.v4.app.view.ViewPager xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/pager"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"> 

</Android.support.v4.app.view.ViewPager>

Le chemin absolu correct de ViewPager est

Android.support.v4.view.ViewPager

Après avoir corrigé le chemin, cela a fonctionné. Je n'ai pas eu à préfixer le nom de l'activité avec un '.'.

8
Himadri Pant

Ce problème a plusieurs réponses basées sur les différents scénarios. La même erreur se produisait lorsque j'utilisais une bibliothèque (.aar) dans mon projet Android Studio.

La cause principale de mon cas est que je n’ai pas ajouté une dépendance de bibliothèque tierce dans le fichier build.gradle de l’app qui était utilisé par le fichier .aar.

exemple: - La bibliothèque (.aar) utilisait 'com.squareup.okhttp3: okhttp: 3.4.1'. J'ai donc dû ajouter

compiler 'com.squareup.okhttp3: okhttp: 3.4.1'

dans build.gradle de l'application. J'espère que ça aide quelqu'un.

5
Amit

Le problème a été résolu en supprimant MultiDexSupport de build.gradle fichier :

defaultConfig {
    multiDexEnabled true    // This line was causing above problem
}

Supprimer le MultiDexSupport a résolu le problème

5
Kushal

Android STUDIO En plus de la réponse de Kishor:

L'erreur s'est produite sur mon petit projet lorsque j'ai activé multiDexEnabled = true dans le gradle defaultconfig. L'utilisation du fichier .apk généré se bloque au démarrage de l'application avec le message d'erreur connu.

Pour moi, cela a été résolu lorsque j'ai construit le fichier .apk via gradle (côté droit de Android studio) -> "votre application" -> Tâches-> installer -> installDebug

J'espère que cela aide quelqu'un avec cette erreur étrange

1
Zuop

J'ai implémenté un écouteur qui n'était pas disponible dans la version Android que je courais encore), ce qui a entraîné la même erreur.

Exemple MainActivity:

// RecyclerView.OnScrollChangeListener is only available on API >= 23
public class MainActivity implements RecyclerView.OnScrollChangeListener
{

}

L'exécution de cette activité sur un périphérique avec une API <23 aboutira également à cette erreur ...

1
prom85