43 votes

API Google Maps Android v2 - Exemple de crash de code

Je vais essayer d'obtenir l' exemple de code d'Android " Google Maps API Android v2 de travail. Je reçois le projet de construction sans erreurs. Cependant, quand j'essaye d'exécuter l'application sur mon Galaxy Nexus (connecté en usb à mon ordinateur portable), l'application se bloque immédiatement.

  • J'ai rempli mes propres Maps API Clé à l'AndroidManifest.xml
  • J'ai construit contre Android 4.1.2

C'est la journalisation:

Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (66) 
Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed 
Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> 
VFY: unable to resolve const-class 108 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; 
VFY: replacing opcode 0x1c at 0x000d 
Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; 
Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) 
Shutting down VM 
threadid=1: thread exiting with uncaught exception (group=0x41ac9930) 
FATAL EXCEPTION: main 
java.lang.ExceptionInInitializerError
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity
at com.example.mapdemo.MainActivity.<clinit>(MainActivity.java:97)
... 15 more

Quelqu'un at-il une astuce comment résoudre ce problème ou ce que je fais de mal?

78voto

Dan J Points 7314

Suivre la feuille de crèche très, très attentivement:
https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw

En particulier, je pense que vous avez besoin de:

  • Importer la source réelle de la "google-play-services_lib de projet et de lien comme un Androidbibliothèque.
    • Le faire par l'intermédiaire du Projet -> Propriétés -> Android -> Library, Add -> google-play-services_lib (vous pouvez faire un clic droit sur votre projet et sélectionnez Propriétés, puis sélectionnez Android).
    • Ne pas l'ajouter comme une personne à charge du Projet par le biais de la "Java Build Path" de votre projet, qui n'a pas fonctionné pour moi.
  • Ajouter l'google-play-services.jar et android-support-v4.jar dans un "libs" dossier dans l'exemple de projet, et de les ajouter en tant que "External External JARs" dans "Build Path -> Configure Build Path -> Bibliothèques".

J'ai trouvé cette deuxième étape a été nécessaire, comme j'ai été frappé exactement la même erreur lorsque vous essayez d'utiliser l'exemple de code. La première étape était nécessaire pour éviter une NoClassDefFoundError en com.google.android.gms.R$styleable dans mon projet immobilier.

J'ai aussi besoin de faire une construction Propre et Désinstaller l'application à partir de l'appareil (à partir d'un test précédent essai) avant de l'exemple de code a fonctionné.

26voto

David Points 2298

Suivez échantillon suivant les instructions du code par google.

Sautez sur "4" de l'article, et suivez les instructions ci-dessous:

  • Ajouter un nouveau dossier de votre projet nommé "libs"
  • Copie google-play-services.jar forme:

    "android-sdk-dossier\extras\google\google_play_services\libproject\google-play-services_lib\libs"

    pour "libs" dossier --> clic droit sur le pot dans ce dossier --> Build path --> Ajouter au build path.

  • Copie android-support-v4.jar forme:

    "android-sdk-dossier\extras\android\support\v4"

    pour "libs" dossier --> clic droit sur le pot dans ce dossier --> Build path --> Ajouter au build path.

Où "android-sdk-dossier" ressemble généralement: "C:\Users\User_Name\android-sdks"

14voto

John Oleynik Points 449

J'ai eu le même problème, j'ai fait ce qui suit pour résoudre le problème.

  1. Allez dans "Propriétés" du projet.
  2. Sélectionnez "Java Build Path"
  3. Sélectionnez "Commande et à l'Exportation" de l'Onglet
  4. Vous devriez voir le projet sélectionné est "src" et "gen" des chemins et des dépendances ici.

L'ordre de la façon dont ils ont été répertoriés en premier "src" et "gen" chemin je commutateur, de sorte que la "gen" le dossier est en construction avant le "src"

PUIS "Vérifier" chacun des éléments énumérés

voir: NoClassDefFoundError Android

2voto

kaskader Points 1135

Cela se produit à cause de beaucoup de confusion sur la manière d'importer des projets. Les docs https://developers.google.com/maps/documentation/android/intro#sample_code dire que vous ne devez pas sélectionner "Copier de projets dans l'espace de travail" à tout moment et pour l'obtention d'échantillons de course c'est ce que vous avez besoin pour tenir. Ne sélectionnez pas cette option pour les jouer à des services et des échantillons - les laisser là où ils sont.

Après vous importer, vérifiez les points suivants:

  1. Cliquez-droit sur le MainActivity projet et choisissez propriétés
  2. Aller à Android et assurez-vous de voir une coche verte à côté de google-play-services-lib (Le jeu des services lib ne doivent jamais être ajoutés comme un pot - au lieu de cela il convient d'ajouter qu'un Androïde de la bibliothèque)
  3. Aller à Java Build Path et l'importation externe pot ( android-support-v4.jar) dans la section des bibliothèques
  4. [IMPORTANT] Aller à la Commande et à l'Exportation dans le Java Build Path et assurez-vous que le android-support-v4.jar a une coche à côté de lui (il ne se fera pas par défaut et c'est pourquoi vous voyez l'erreur que vous mentionnez en haut)
  5. Assurez-vous de nettoyer et de construire le projet, après avoir fait des changements, de sorte que vous ne finissent pas à essayer de réparer les choses qui fonctionnent, mais n'étaient tout simplement pas poussé.

1voto

nguyên Points 551
  1. Suivez les instructions de code exemple par Google.
  2. Et définissez le chemin de génération Java comme suit: entrez la description de l'image ici

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