Android ClassNotFoundException
J'ai un problème avec une de mes applications, et je me demandais si quelqu'un pourrait me donner un aperçu de ce que peut-être la cause.
Je suis ClassNotFoundException, l'important ligne ci-dessous est
E/AndroidRuntime(21982): Caused by: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in loader dalvik.system.PathClassLoader@446fc3d0
Maintenant cette application a été pendant plus d'un an et 2 jours, j'ai eu deux séparés utilisateurs me contacter au sujet de cette question, l'une sur un HTC wildfire (2.1) et un Samsung Galaxy S (?). Maintenant, je ne peut pas recréer ce problème sur mes appareils (2.2 et 1.6) ou un émulateur (2.1) et ne peut pas vraiment pourquoi cette classe ne peut pas être trouvé par le chargeur de classe. J'ai passé un certain temps sur google en vain, et on espère que quelqu'un a quelques conseils! Il semble seulement être une activité qui est chargé lorsque le contentView est défini, il essaie de gonfler un Affichage personnalisé appelé GoBoardView qui étend la classe de la Vue, c'est juste une simple toile de dessin et n'est pas l'aide d'un tiers libs ou toutes les autres classes qui ont un paquet clash ou quoi que ce soit.
S'il vous plaît aider! Juste au cas où son accumulation question je suis la mise à jour de tous mes SDK et ADT par eclipse comme c'était le bâtiment contre 1,6 et à l'aide de l'ancien ADT, mais je n'ai aucune idée si cela va aider juste pensé vaut la peine d'essayer. Tout conseil serait formidable merci! (voir ci-dessous pour MODIFIER)
E/AndroidRuntime(21982): java.lang.RuntimeException: Unable to start activity ComponentInfo{couk.doridori.goigoFull/couk.doridori.goigoFull.Board}: android.view.InflateException: Binary XML file line #14: Error inflating class couk.doridori.goigo.customUI.GoBoardView
E/AndroidRuntime(21982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
E/AndroidRuntime(21982): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
E/AndroidRuntime(21982): at android.app.ActivityThread.access$2200(ActivityThread.java:126)
E/AndroidRuntime(21982): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
E/AndroidRuntime(21982): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(21982): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(21982): at android.app.ActivityThread.main(ActivityThread.java:4603)
E/AndroidRuntime(21982): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(21982): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(21982): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(21982): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(21982): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(21982): Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class couk.doridori.goigo.customUI.GoBoardView
E/AndroidRuntime(21982): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
E/AndroidRuntime(21982): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
E/AndroidRuntime(21982): at android.app.Activity.setContentView(Activity.java:1629)
E/AndroidRuntime(21982): at couk.doridori.goigoFull.Board.onCreate(Board.java:31)
E/AndroidRuntime(21982): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(21982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
E/AndroidRuntime(21982): ... 11 more
E/AndroidRuntime(21982): Caused by: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in loader dalvik.system.PathClassLoader@446fc3d0
E/AndroidRuntime(21982): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
E/AndroidRuntime(21982): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/AndroidRuntime(21982): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
E/AndroidRuntime(21982): at android.view.LayoutInflater.createView(LayoutInflater.java:466)
E/AndroidRuntime(21982): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
E/AndroidRuntime(21982): ... 22 more
MODIFIER
Ok, la recherche de certains des liens que les utilisateurs ont commenté en réponse à cette question, il semble que l'utilisation du mauvais contexte pour le chargement des activités peuvent causer ce problème. Je trouve cela intéressant parce que un de la deux rapports du journal, j'ai été envoyer a cette exception précédé par
W/ActivityManager( 1222): startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { flg=0x20000 cmp=couk.doridori.goigoFull/.Games }
qui est tout à fait compréhensible en soi - problème est que je n'ai aucune idée de l'endroit où cette activité peut être démarré à partir d'où il utilise un non contexte d'activité, donc je suis un peu perplexe, en pensant qu'il maye être certains multitâche comme caprice et son être ramené au premier plan de quelque chose . Cela peut alors apparemment provoquer des problèmes avec le chargeur de classe. Si cela se passait sur un utilisateur de téléphone je ne peux pas voir pourquoi je ne peux pas reproduire ce (et la plupart des autres utilisateurs ne peuvent pas non plus).
L'autre chose que j'ai trouvé par le biais des liens qui est intéressant, c'est que certaines personnes ont rencontré des problèmes en raison d'une "mauvaise apk de l'installation", qui peuvent être résolus par une réinstallation, en qui j'ai demandé les utilisateurs qui ont eu le problème pour essayer (ce qui ne veut pas faire une différence). Aussi, il semble que une fois que le problème est rencontré (qui est à la première utilisation), il sera persistante.
- Avez-vous un Récepteur de Radiodiffusion avec le filtre d'intention Intention.FLAG_ACTIVITY_NEW_TASK ? Cela pourrait être la non-Activité, contexte qui pourrait tenter de commencer à l'une de vos activités.
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas aider mais noter que votre nom d'Activité est
couk.doridori.goigoFull.Board
mais la disparition de votre Affichage personnalisé de la classe estcouk.doridori.goigo.customUI.GoBoardView
... on dirait que vous pourriez avoir deux paquets différents (goigo vs goigoFull).Êtes-vous, par hasard, faire des choses intelligentes avec les projets de la bibliothèque? Vous devrez être très prudent avec complet les noms de classe dans le code et dans la mise en page xml...
(Si non, merci d'ajouter quelques informations sur votre projet d'installation et également de coller votre mise en page XML, ce qui le layoutinflater s'étouffe)
J'étais déjà en train de discuter de ce problème ici : Android: Impossible d'instancier activité /ClassNotFoundException, mais nous ne pouvions pas trouver une réponse définitive... Cependant, John J Smith réponse quant à la bonne utilisation du Contexte est intéressant.
Certaines personnes ont aussi résolu leur problème sur ce fil et donne quelques idées.
Espère que cela aide...
(Par la façon dont je suis heureux de voir un autre jeu de Go programmeur !)
J'ai ajouté une mise en page personnalisée et commencé à voir des ClassNotFoundException messages après seulement sur le contrat de package d'application, mais la version de développement a été fonctionne correctement. J'ai été en utilisant ProGuard et la nouvelle mise en page, j'ai ajouté n'a pas été inclus dans la liste des "exclure" dans le ProGuard config. J'ai inclus la mise en page personnalisée dans ProGuard liste d'exclusion et qui a résolu le problème pour moi.
Je rencontre ce problème, parfois, quand en développement en général après le changement de noms de paquets. Un nettoyage rapide des le projet résout le problème pour moi.
Il y a une autre chose qui provoque "ClassNotFoundException". Il y a quelques temps, le projet android a commencé à utiliser le répertoire libs pour les dépendances. Si un pot est dans le répertoire libs, c'est sur le chemin de classe automatiquement, donc vous n'avez pas à l'ajouter dans les paramètres du projet. Cependant, pots de "libs" ne peut pas avoir des sources ci-joint (ce qui est ridicule). Donc, si vous souhaitez connecter une source, vous déplacez un bocal de "libs" à "lib" et de l'ajouter dans le classpath. Vous pouvez joindre la source. Mais j'ai vu plusieurs fois que cela déclenche ClassNotFoundExceptions sur mes cours. Déplacer le pot résout le problème.
J'ai eu le même problème. En fin de compte, le problème était manquant de peu de tableaux dans la mise en page xml.
Avant:
Puis avec l'indentation classNotFoundException jamais apeared de nouveau, et l'a montré la carte correctement:
Mon expérience, peut-être que le sdk android a été mis à jour et le lien vers la bibliothèque de prise en charge devait être actualisé. Il suffit d'aller à paramètres de projet > android et point à la bibliothèque de prise en charge de nouveau.
Pour moi le Problème était un peu Caps-Faute.
J'ai regardé mon code pour des heures où tout allait bien.
Quelques temps j'ai regardé dans mon .de Fichiers xml alors - et il était là:
Dans la java des Fichiers, j'ai utilisé un ViewPager et dans un méchant petit morceau de l'xml, j'ai perdu mon casquettes et tapé viewPager par erreur. Évident, que celui-ci n'a pas pu être trouvé...
cela est dû à la nouvelle version d'eclipse ... supprimer toutes les dépendances externes de buildpath et l'ajouter à nouveau à l'aide de projet->propriétés->builspath->onglet bibliothèques. Maintenant ajouter à la dépendance de la bibliothèque et sélectionnez tous les composants en cliquant sur eux l'ordre et onglet projet sur projet->propriétés->builspath- . ce sera beau travail !