2010-11-19 4 views
1

Je travaille sur un exemple de facebook-sdk et j'essaie d'utiliser la collection de classes fournie comme .JAR. Je suis relativement nouveau à java et éclipse alors je m'attends à faire une erreur évidente.Android: Java Impossible de trouver la classe à l'exécution de JAR J'ai créé

Le problème est que tout semble se compiler correctement, mais quand je lance le projet (en utilisant l'émulateur Android) dalvik vm est incapable de trouver la première classe que je référence de ce facebook sdk. (com/facebook/android/Facebook.class)

En passant, si je copie la source directement dans mon projet comme un paquet supplémentaire tout fonctionne bien.

Étape 1: J'ai exporté le projet com_facebook_android sous la forme d'un fichier .JAR. (clic droit projet, export, fichier java/jar) Je choisis c: \ data \ jag \ jar comme emplacement pour enregistrer facebooksdk.jar.

Étape 2: J'ai frappé les propriétés sur le projet HelloGoogleMaps, Selected Java Build Path, Bibliothèques, Ajouter des JAR externes ... J'ai directement sélectionné le fichier c: \ data \ jag \ jar \ facebooksdk.jar.

À ce stade, mon projet semble être très bien construit (pas d'erreurs). alt text

Etape 3: Mise au point du projet et recevoir l'erreur:

[2010-11-19 09:05:08 - Exemple] ActivityManager: Erreur: classe d'activité {com.facebook.android/com. facebook.android.Example} n'existe pas. [2010-11-19 09:05:11 - Exemple] Début de l'activité com.facebook.android.Example sur le périphérique [2010-11-19 09:05:12 - Exemple] Nouveau package non encore enregistré auprès du système. Attendre 3 secondes avant la prochaine tentative.

[2010-11-19 09:05:15 - Exemple] activité de départ com.facebook.android.Example sur l'appareil

[2010-11-19 09:05:17 - Exemple] ActivityManager: A partir : Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] cmp = com.facebook.android/.Exemple}

[2010-11-19 09:05:17 - Exemple] Nouveau paquet non encore enregistré avec le système. Attendre 3 secondes avant la prochaine tentative.

[2010-11-19 09:05:20 - Exemple] activité de départ com.facebook.android.Example sur l'appareil

[2010-11-19 09:05:21 - Exemple] ActivityManager: A partir : Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] cmp = com.facebook.android/.Exemple}

[2010-11-19 09:05:21 - Exemple] ActivityManager: Type d'erreur 3

[2010-11-19 09:05:21 - Exemple] ActivityManager: Erreur: La classe d'activité {com.facebook.android/com.facebook.android.Example} n'existe pas.

SHAWN - Voici les propriétés d'Android pour mon projet.

alt text

+0

Où la classe Example est-elle définie? Et où est-il utilisé? – DarthNoodles

Répondre

4

Lorsque vous définissez le chemin de génération Java, vous ne l'avez fait: définir le chemin de la construction elle-même. Cela vous a amené à obtenir une compilation réussie. Toutefois, lorsque le fichier .apk est créé, le système ne sait pas que vous avez besoin de fichiers JAR externes pour être regroupés avec vos fichiers source.

Je ne l'ai pas fait auparavant, mais il semble que si vous faites un clic droit sur votre projet com_facebook_android et sélectionnez Propriétés> Android, vous devez sélectionner la case Is Library. Ensuite, allez dans les propriétés Android de votre projet principal et cliquez sur Ajouter ... et choisissez la bibliothèque externe. Je crois que cela fera ce dont vous avez besoin.

EDIT: Ceci est appelé un projet de bibliothèque et est un ajout relativement nouveau au SDK. Vous pouvez trouver plus d'informations à http://developer.android.com/guide/developing/eclipse-adt.html#libraryProject

+0

Salut Shawn .. Argh, se sent comme si vous me remis les clés du royaume et je ne peux pas trouver le trou de la clé. La boîte de dialogue (propriétés, android) ne semble pas avoir un dialogue "Is Library". Ne semblerait-il pas que je dois dire au projet inclus (helloGoogleMaps) pas le inclus (facebookSdk) qu'il devrait regrouper le JAR? – badMonkey

+0

Oui, vous indiquez au projet inclus qu'il doit regrouper le fichier JAR. Cependant, cela ne vous donne que le choix des projets déclarés en tant que bibliothèque. –

+0

Lorsque je vois les propriétés Android, il a deux sections; le premier est Project Build Target et le second est Library; C'est cette deuxième section qui contient la case à cocher Is Library. –

0

Je pense que vous devrez ajouter com.facebook.android comme une bibliothèque dans votre projet ...

si je ne me trompe pas c'est android facebook sdk.

Vous pouvez vérifier ce lien sur ...

Voir les instructions ici:

https://github.com/facebook/facebook-android-sdk

espérons qu'il vous aidera ........
thanksss

+0

viv - Je travaille avec ce dont vous parlez. le problème que j'ai est d'obtenir mon projet pour inclure/bundle le fichier .JAR que j'ai créé à partir de ce facebookSDK. – badMonkey

+0

voir les commentaires ci-dessous – badMonkey

+0

c'est le même que j'ai utilisé, c'est pourquoi je dis de suivre les instructions données sur le lien, j'ai aussi essayé de faire le pot, mais cela ne m'a pas aidé ...... à moins vous devriez essayer, le repos est tout sur vous, la chance et le dieu, merci ... Dieu vous bénisse – viv

0

ok, vraiment pas à l'aise avec ce que j'ai fait pour me dépasser.
1) J'ai ajouté le .jar comme un pot externe.
2) J'ai ensuite inclus le fichier .apk en .jar (pas en jar externe). J'ai dû le sélectionner directement à partir de com_facebook_android/bin/com_facebook_android.apk. Il semble que je résous ceci avec la force brute et quelque chose d'autre serait plus approprié.

Questions connexes