2010-11-26 44 views
3

Je ne les éléments suivants:NoClassDefFoundError se produit lors de l'exécution lorsque j'utilise les packages Java mutliple dans un seul projet Android

  1. Créer un projet Android de travail (pas un projet de bibliothèque ou test) dans Eclipse. Il a un seul paquet appelé X avec une activité X.A.
  2. Créer un nouveau package Java Y dans le projet mentionné ci-dessus avec au moins une classe Y.C.
  3. Appelez Y.C à partir de X.A (c'est-à-dire, appelez quelque chose dans le nouveau paquet à partir du paquet d'origine qui fonctionne précédemment).
  4. Créez et exécutez le projet Android.

Il se construit bien, mais renvoie NoClassDefFoundError sur la première ligne en utilisant Y.C, indiquant qu'il ne trouve pas Y.C. Quand je refais -> Déplacer Y.C dans le paquet X (donc c'est maintenant X.C), l'exception d'exécution n'est plus levée. Qu'est-ce qui ne va pas? Indice de Vague: J'ai lu que des problèmes similaires peuvent se produire lorsque les classes de temps de construction et d'exécution ne sont pas synchronisées, mais je n'ai pas encore trouvé comment résoudre ou résoudre le problème.

Répondre

2

Dans votre AndroidManifest.xml lorsque vous définissez vos activités, vous devez définir le nom de classe complet pour les activités qui se trouvent dans un sous-package ou même un autre package. Un nom de classe complet serait com.example.my.cool.app.Activity. Alternativement, lorsque vous travaillez uniquement avec des sous-packages, vous pouvez le définir comme ceci: android:name=".app1.AnotherActivity" lorsque votre base-package ressemble à ceci: com.example.my.cool.

+0

Merci, je n'ai pas encore appris sur AndroidManifest en profondeur, donc je vais le faire ensuite. Je n'ai aucune activité dans le deuxième paquet (Y). – apollodude217

+0

@ apollodude217: Alors il n'y a pas de problème. Il vous suffit d'importer la classe dont vous avez besoin dans votre activité et tout ce qui est bon. –

+0

Si vous voulez utiliser "import Y.C;" dans le fichier de code source pour X.A, alors je l'ai déjà fait, et il jette encore à l'exécution quand j'appelle Y.C. – apollodude217