34 votes

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 une ClassNotFoundException, la ligne importante est ci-dessous

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 l'un des 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 }

ce qui est assez explicites - 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 persistant.

34voto

Reuben Scratton Points 22314

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 est - couk.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)

7voto

Dalmas Points 13600

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 de discussion et donne quelques idées.

Espérons que cela aide...

(Par la façon dont je suis heureux de voir un autre jeu de Go programmeur !)

3voto

Kiran Points 31

J'ai ajouté une mise en page personnalisée et j'ai commencé à voir les messages ClassNotFoundException après seulement sur le package d'application signé, mais la construction de développement fonctionnait très bien. J'utilisais ProGuard et la nouvelle disposition que j'ai ajoutée n'était pas incluse dans la liste "exclure" de la configuration ProGuard. J'ai inclus la disposition personnalisée dans la liste d'exclusion de ProGuard et cela a résolu le problème pour moi.

2voto

Dan Points 29

Je rencontre parfois ce problème lors du développement, généralement après avoir changé les noms de paquets. Un nettoyage rapide du projet résout le problème pour moi.

1voto

Christine Points 1601

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X