java.lang.ClassNotFoundException: N'a pas trouvé de classe sur le chemin: dexpathlist

Karthik Sivam 08/21/2017. 13 answers, 93.384 views
java android android c++ android-ndk android-ndk

Je travaille actuellement sur un projet dans lequel je dois utiliser ndk purement natif. Cela a fonctionné quand j'ai essayé d'exécuter un exemple de helloworld de la source de moteur d'Irrlicht. Ensuite, j'essaie de l'utiliser dans mon projet en suivant le même format de cet exemple. Mais j'ai:

03-14 01:40:05.308: E/AndroidRuntime(799): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/android.app.POMActivity}: java.lang.ClassNotFoundException: Didn't find class "android.app.POMActivity" on path: DexPathList[[zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]] 

en cours d'exécution de mon projet.

Voici mon fichier main.cpp:

#include #include #include #include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
} 

#fin si

dans Android.mk:

LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include -I /home/karthik/Android/json/jsoncpp-src-0.5.0/libs/linux-gcc-4.8 -I /home/karthik/Android/json/jsoncpp-src-0.5.0/include/json 
LOCAL_SRC_FILES :=  android_tools.cpp main.cpp
LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid -ldl 
LOCAL_STATIC_LIBRARIES := Irrlicht android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue) 

Et j'ai donné le nom de l'activité dans AndroidManifest.xml:

...                 

Quelle est l'erreur que je fais ici? Je posterai le code complet si nécessaire.

4 Comments
Siddharth_Vyas 03/14/2014
Utilisez-vous des fichiers jar externes?
Karthik Sivam 03/14/2014
@SiddharthVyas Non, je n'utilise pas de fichiers jar externes dans ce cas.
1 Igor Ganapolsky 08/09/2016
Votre application est-elle multi-dexée? Si oui, cela explique le problème.
j2emanue 07/05/2017
quand j'ai fait une apk signée cette erreur ne s'est pas produite. juste déboguer

13 Answers


mnsalim 05/23/2017.

J'ai eu un problème similaire, voici ma solution:

  1. Faites un clic droit sur votre projet et sélectionnez Properties .
  2. Sélectionnez Java Build Path dans le menu à gauche.
  3. Sélectionnez l'onglet Order and Export .
  4. Dans la liste, vérifiez que les bibliothèques ou les fichiers externes que vous avez ajoutés à votre projet sont checked .
  5. Enfin, nettoyez votre projet et exécutez.

Vous pouvez également vérifier cette réponse.

4 comments
1 FoxDonut 11/06/2016
C'est la bonne solution à la question. J'ai testé cela avec mon jeu libgdx avec les mêmes erreurs que celles trouvées ci-dessus. J'ai trouvé ces erreurs en utilisant le journal généré avec mon téléphone (samsung galaxy S6). Une fois que j'ai appliqué cette solution, tous mes problèmes ont été résolus.
2 Zin Min 03/25/2017
Je ne peux pas trouver les propriétés du clic droit du projet. Peut-être que je suis stupide. :(
2 user3036320 04/19/2017
s'il vous plaît montrer la solution de studio android ...
2 Skyler 07/08/2017
Je ne trouve pas les propriétés non plus, tout le monde trouve comment naviguer vers la page listée

Sushil 03/14/2014.

Cela semble être un problème dans votre cas. Le chemin relatif de votre activité dans le manifeste n'est pas correct:

 

remplacez ceci par:

 

ou

 
1 comments
1 Karthik Sivam 03/14/2014
J'ai essayé les deux, il montre la même exception.

Akash Bisariya 03/06/2017.

Je devrais comprendre le problème en voyant juste

dex errors

Mais il a fallu une demi-journée pour régler le problème.
Je corrige cela en suivant les instructions de la page des développeurs android: https://developer.android.com/studio/build/multidex.html

Ajoutez d'abord ceci au fichier gradle.build:

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

 dependencies {
     compile 'com.android.support:multidex:1.0.0'
 } 

Ensuite, AndroidManifest.xml classe Application (ou déclarez la classe d'application dans AndroidManifest.xml ou override attachBaseContext() ) avec la classe MultiDexApplication comme indiqué sur le lien ci-dessus.

C'est tout et cela a résolu le problème.

4 comments
1 milosmns 08/30/2016
L'ajout de multi-dex n'est utile que lorsque vous passez la limite du nombre de références (56k), et il est very instable et very peu fiable avant Lollipop. Cela devrait être utilisé pour résoudre les problèmes en dernier recours.
Akash Bisariya 08/30/2016
alors quelle devrait être la solution selon vous
milosmns 08/30/2016
Je dis juste que multi-dex cause plus de problèmes que cela aide, ce qui est clairement indiqué sur le site Web du développeur. Je ne serais pas ici en train de chercher une réponse si j'en avais une, n'est-ce pas?
Akash Bisariya 08/30/2016
Ok merci pour l'info, S'il vous plaît mettre à jour ici si vous avez trouvé une bonne solution, ce serait une aide précieuse.

V. Kalyuzhnyu 07/07/2016.

La suppression de l'application sur l'appareil et le nettoyage du projet fonctionne pour moi


crazyjune 06/13/2014.
  1. supprimer le dossier bin
  2. changer l'ordre des bibliothèques
  3. nettoyer et reconstruire

travaillé pour moi.


Ali Gürelli 10/13/2016.

Je l'ai résolu en utilisant: ./gradlew --stop commande dans le terminal de studio android. Après avoir exécuté cette commande, nettoyez et reconstruisez le projet.


Redman 01/05/2017.

Pour tous ceux qui ont multidex permettre écrire cela

à l'intérieur de build.gradle

apply plugin: 'com.android.application'

android {
 defaultConfig {
      multiDexEnabled true
  }
 dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.android.support:multidex:1.0.1'
} 

écrire une classe EnableMultiDex comme ci-dessous

import android.content.Context;
import android.support.multidex.MultiDexApplication;

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
} 

et dans AndroidManifest.xml écrivez ce className dans la balise Application

 

Ashik Abbas 07/26/2017.

J'ai essayé toutes les options possibles mais le résultat est nul. Enfin, j'ai trouvé la bonne solution qui est utile pour moi. Il suffit de désactiver l' exécution instantanée. Allez dans Fichier -> Paramètres -> Générer, Exécution, Déploiement -> Exécution instantanée -> Décochez la case pour une exécution immédiate . Lancez votre application une fois et ce fichier apk fonctionne correctement.


Walking Code 05/05/2014.

Changez simplement votre nom de dossier de lib en libs ,

Ensuite, vous verrez des marques d'erreur dans votre projet, pour résoudre ce droitCliquez sur le projet>

Properties > Java Build Path > libraries :

Supprimez toute la bibliothèque avec des marques rouges dessus, puis apply > ok > après cela clean your project . TADA voir la magie :)

1 comments
Shubham 10/27/2015
le nom du dossier est libs seulement

Tere Bentikh 09/29/2015.

Après avoir essayé les réponses données, j'ai trouvé une autre raison pour la même exception, que j'ai dû ajouter la bibliothèque que j'utilise manuellement à ma bibliothèque principale à travers

Right click on my main library > 
Properties > 
Android > 
Go to the very bottom of the screen and click (Add) > 
Select my other library that caused the crash >Apply 

avant cette solution, j'ai utilisé la "configuration du projet Fix" à partir du fichier .java dans eclipse, mais cela n'a pas fonctionné, donc j'ai dû l'ajouter manuellement ici et cela a fonctionné


dees91 11/21/2016.

Si vous recevez cette erreur après avoir supprimé certaines dépendances, vérifiez votre manifeste et assurez-vous que vous avez supprimé toutes les entrées correspondant à cette dépendance.

1 comments
Petter Friberg 11/21/2016
Merci de ne pas ajouter la même réponse à plusieurs questions. Répondez au meilleur et signalez le reste comme doublons. Voir Est-il acceptable d'ajouter une réponse en double à plusieurs questions?

Lorsque vous utilisez multidex, essayez d'étendre votre classe d'application avec MultiDexAppication au lieu de Application et remplacez ci-dessous la méthode requise pour Android ci-dessous 5.0 (parce que 5.0 et plus supportent le multidex)

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

et dans les dépendances ajoutez ceci

compile 'com.android.support:multidex:1.0.1' 

Shivegeeky 06/23/2017.

Comme je le comprends, je reçois le problème après la mise à jour Android Studio 2.1 à 2.3 en raison de la fonctionnalité instantanée de mon application ne fonctionnera pas lorsque je copie l'apk de la sortie et mettre dans la carte SD. Pour ce problème, je construis l'apk à partir de l'option de construction de construire apk dans le studio android.

Related questions

Hot questions

Language

Popular Tags