java.lang.ClassNotFoundException: Ne pas à trouver de la classe sur le chemin: dexpathlist
Je suis actuellement en train de travailler sur un projet dans lequel je dois utiliser purement indigènes ndk. Il a travaillé quand j'ai essayer de lancer un helloworld exemple à partir de la source du moteur Irrlicht. Ensuite, j'essaie de l'utiliser dans mon projet en suivant le même format de cet exemple. Mais j'ai eu:
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]]
lors de l'exécution de mon projet.
Voici mon main.cpp fichier:
#include <android/log.h>
#include <jni.h>
#include <android_native_app_glue.h>
#include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
}
#endif
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:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.irrlicht.example1"
android:versionCode="1"
android:versionName="1.0">
...
<application android:icon="@drawable/irr_icon" android:label="HelloWorldMobile1" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:debuggable="true">
<activity android:name="android.app.POMActivity"
android:label="HelloWorldMobile1"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:clearTaskOnLaunch="true">
<meta-data android:name="android.app.lib_name" android:value="HelloWorldMobile1" />
Quelle est l'erreur que j'ai fais ici? Je vais poster le code complet si necassary.
- Êtes-vous à l'aide extérieure de fichiers jar?
- Non , je ne suis pas l'utilisation des fichiers jar dans le présent.
- Votre demande est multi-dexed? Si oui, alors qui explique le problème.
- quand j'ai fait un signé apk cette erreur ne se produit pas. juste de débogage
- Avez-vous trouvé une solution ?
Vous devez vous connecter pour publier un commentaire.
J'ai essayé toutes les options possibles, mais le résultat est zéro. J'ai enfin trouvé la bonne solution, ce qui est utile pour moi. Il suffit d'aller à désactiver l'Instant Exécuter Aller à Fichier -> Paramètres -> Construire,l'Exécution, le Déploiement -> Instant Exécuter -> Décocher la case pour l'instant exécuter. Exécutez votre application une fois et ce fichier apk fonctionner correctement..
J'ai eu un problème similaire, voici ma solution:
Vous pouvez également vérifier cette réponse.
Cela semble être un problème dans votre cas. Le chemin d'accès relatif de votre activité dans le manifeste n'est pas correct:
remplacer par :
ou
La suppression de l'application sur le périphérique et le nettoyage de projet fonctionne pour moi
Je devrais comprendre le problème par juste de voir
Mais il a fallu une demi-journée pour résoudre le problème.
- Je résoudre ce problème en suivant les développeurs android page de l'instruction:
https://developer.android.com/studio/build/multidex.html
D'abord l'ajouter à gradle.build fichier :
Ensuite étendre l'Application de la classe (ou à la déclaration de la classe d'application dans
AndroidManifest.xml
ou remplacerattachBaseContext()
fonction avec laMultiDexApplication
classe, comme indiqué sur le lien ci-dessus.C'est tout et il a résolu le problème.
Cette exception peut également se produire lorsque vous avez un vue personnalisée dans votre mise en page comme ceci:
et que vous modifiez l'affichage du nom du package de "com.exemple" à quelque chose de différent, mais vous oubliez de le modifier dans la mise en page.
a fonctionné pour moi.
je l'ai résolu en utilisant:
./gradlew --stop
commande dans android studio terminal. Après avoir effectuer cette commande puis nettoyer et reconstruire projet.Juste essayer Propre Projet & Projet de Reconstruction de.
Pour toute personne qui est d'avoir multidex permettre d'écrire ce
à l'intérieur de construire.gradle
écrire une classe
EnableMultiDex
comme ci-dessouset dans
AndroidManifest.xml
écrire ce className intérieur de la balise ApplicationenableMultiDex
affecter? Dans mon cas,javaMaxHeapSize "4g"
n'a pas aidé.MultiDexApplication
. Il est nécessaire si vous souhaitez utiliser multidexMultiDexApplication
ouattachBaseContext
(voir developer.android.com/studio/build/multidex).J'ai fait face à ce Problème plusieurs fois et ils sont tous résolus en désactivant Instant Exécuter.
Si le projet a été la compilation juste avant, vous pouvez essayer de vider le cache à l'aide de :
./gradlew clean
ou
./gradlew cleanBuildCache
ou pour windows
gradlew cleanBuildCache
https://developer.android.com/studio/build/build-cache.html
Nous n'avons pas besoin d'avoir personnalisé Application classe qui s'étend MultiDexApplication. Au lieu de cela, nous pouvons avoir de ce genre sur le AndroidManifest.xml
Et avec ce sur construire.gradle(Module:app),
Grâce.
Lorsque vous utilisez multidex , puis d'essayer de prolonger votre classe d'application avec MultiDexAppication lieu de l'Application et de la remplacer en dessous de cette méthode requise pour Android ci-dessous 5.0 (parce que la 5.0 et au-dessus du support à la multidex)
et dans les dépendances d'ajouter cette
Application
. Pourquoi devrions-nous remplacer dans le cas deMultiDexAppication
?Il suffit de Changer le nom de votre dossier de
lib
àlibs
,Ensuite, vous verrez une erreur marques dans votre projet, pour résoudre ce cliquez avec le bouton droit sur le projet >
Properties > Java Build Path > libraries
:Supprimer tous les la bibliothèque avec des marques rouges sur elle, puis
apply > ok >
après que nettoyer votre projet . TADA, de voir la magie 🙂après j'ai essayé les réponses données, j'ai trouvé une autre raison pour la même Exception, que j'ai dû ajouter de la bibliothèque, je suis en utilisant manuellement à ma bibliothèque principale à travers
avant cette solution, j'ai utilisé le "Correctif" configuration de Projet" de dans le .fichier java dans eclipse, mais cela ne fonctionne pas, donc j'ai dû l'ajouter manuellement ici et cela a fonctionné
Je recevais ce crash sur Samsung Sucette appareils et ce solution a fonctionné pour moi.
Je poste cette réponse ici, car cette question est actuellement la mieux classée parmi les résultats de recherche sur Google pour ce crash et aucune des réponses ci-dessus, a travaillé pour moi.
Dans mon cas, cette question a été soulevée en raison de Kotlin. Dans mon code il y a une classe qui a été écrit Kotlin. J'ai construit l'application, il est installé et dès que la première activité de l'ouverture de l'app s'est écrasé. dans le logcat cette erreur a été montré. J'ai ensuite mis à jour mon Kotlin version de Kotlin site web en application gradle fichier. Construire l'application à nouveau et il a bien fonctionné ensuite.
La solution suivante a fonctionné pour moi...
J'ai essayé tout ce qui est mentionné ci-dessus, mais n'a toujours pas eu mon application en cours d'exécution.
J'ai réagir-application native sur la dernière version de gradle 4+ et android studio.
J'ai eu le problème si je lance réagir indigènes de l'exécution android il n'était pas avec la question en disant ses pas en mesure de trouver MainApplication classe...j'.e ClassNotFoundException
J'ai été en mesure de résoudre le problème lorsque j'ai mis à jour mon gradle.propriétés à utiliser le compilateur D8.
J'ai ajouté:
android.enableD8=true
à mon gradle.propriétés
Doc plus de Détails ici:
https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html
Si vous avez activé
minifyEnabled
etshrinkResources
à true dans votre application gradle fichier. Vous devez ajouter la ligne suivante dansproguard-rules.pro
fichierparce que minification est supprimé certaines de classes dans notre fichier apk.
Si vous recevez cette erreur après le retrait de certains gradle dépendance, vérifiez votre manifeste, et assurez-vous que vous avez supprimé toutes les entrées correspondant à cette dépendance.
Comme pour mon understading je reçois le problème après la mise à jour android studio 2.1 à 2.3 en raison de l'instantané fonction de mon application ne s'exécutera pas quand j'ai copier l'apk de sortie et de le mettre dans la carte sd.
Pour ce problème, je construire l'apk de construire l'option de construire apk android studio.
J'ai eu le même message d'erreur et certaines réponses me tromper sur une question de newbie. J'ai eu le mauvais paquet dans ma vue personnalisée descripteur comme ci-dessous. J'espère que cela aide quelqu'un.
Ashik abbas réponse (désactiver Instant Exécuter) de travail pour moi, mais j'ai besoin de Instant Exécuter, j'ai enfin trouvé la solution qui est utile pour moi.
il suffit de désactiver la minifyEnabled.
aller à construire.gradle(Module: app) dans debug bloc et désactiver minifyEnabled:
Pour moi le problème est apparu après que j'ai créé un signé APK. Pour le fixer, j'ai généré un nouveau, apk de débogage à l'aide de Run /Construire APK. Après cela, Exécutez(cmd+r) fonctionne à nouveau sans cette erreur.
j'ai eu ce problème avant et les commentaires ici ont aidé dans le passé, mais cette fois, il n'a pas. j'ai vérifié mon proguard de configuration et je retiré les lignes suivantes et puis il a tellement proguard peut avoir quelque chose à faire avec cette erreur:
J'ai été confronté à la même question. J'ai essayé tout ce qui est possible pour un jour, mais rien n'a fonctionné.
La dépendance qui a été la cause du problème était d'utiliser moins d'compiler kit de développement sdk cible et min sdk. J'ai créé module de la bibliothèque pour le projet, copié toutes les sources et correspondait à la versions du sdk avec l'application versions du sdk. Et enfin, il a travaillé comme un charme.
Dans mon cas, j'ai utilisé l'ancien espace de noms de la bibliothèque tandis que mon projet a été mis en place, faisant usage de androidx un.
La solution était de remplacer
android.support.design.widget.BottomNavigationView
composant avec la droite pour s'échapper de la bibliothèque de prise en charge:com.google.android.material.bottomnavigation.BottomNavigationView
.Une raison possible serait le chemin d'accès incorrect de l'activité dans les Applications AndroidManifest.xml fichier.
Enregistrer l'activité de votre AndroidManifest.xml avec plein de chemin d'accès relatif, comme ci-dessous.
Cela a résolu mon cas:
Dans mon cas, j'avais l'exception ci-dessous (notez que ma classe d'application a été l'origine de l'exception, pas mon activité):
Je recevais cette exception uniquement sur les appareils égal ou au-dessous de l'API 19, la raison était que j'étais l'extension de
MultiDexApplication()
classe et dominanteattachBaseContext
en même temps! Quand j'ai enlevéattachBaseContext
que tout est sur la bonne voie.Donc, si vous arrive d'avoir de tels cas que j'ai eu (ce Qui n'est pas probable), il n'est pas nécessaire d'étendre
MultiDexApplication()
et remplacerattachBaseContext
dans le même temps, faire une de ces actions est assez.