web-dev-qa-db-fra.com

Le fichier Jar de ce fichier de classe appartient au conteneur 'Dépendances Android' qui n'autorise pas les modifications des pièces jointes sources sur ses entrées.

Je crée une application de messagerie qui donne l'erreur dans le titre de cette question. Comment puis-je résoudre ce problème? Je donne la capture d'écran de mes codes si cela aide à trouver une solution.

enter image description here

30
Merve

Semble être quelque chose qu'ils ont intentionnellement cassé dans ADT r17. Voir http://code.google.com/p/Android/issues/detail?id=27490#c6 .

10
Andy Dennie

Il existe une solution officielle à cela:

Autoriser l'attachement src/doc pour les fichiers jar tiers dans libs /

Étant donné que ces fichiers jar sont ajoutés de manière dynamique via un conteneur de classpath, , Les développeurs ne peuvent pas définir le chemin source ni le javadoc via l'interface utilisateur Eclipse (Le conteneur ne permet pas de les modifier). Pour résoudre ce problème, et pour vous assurer que Les deux chemins sont choisis non seulement par le projet actuel, mais également par Également par d'autres projets (si le projet en cours est un projet de bibliothèque), la valeur est définie par un fichier situé à côté du fichier jar. Le fichier s'appelle Après le fichier jar, en ajoutant .properties à la fin. Par exemple, Foo.jar -> foo.jar.properties Il peut actuellement contenir 2 propriétés: Src: chemin relatif ou absolu du dossier source (ou de l’archive). doc: chemin relatif ou absolu vers le javadoc.

https://Android-review.googlesource.com/#/c/35702/

EDIT: Explication dans la vidéo Google I/O 2012

Exemple, pour Joda-Time 2.1:

cd $PROJECT/libs
touch joda-time-2.1.jar.properties

Et insérez ce qui suit en vous assurant que le chemin est correct:

src=/Users/josh.oneal/SDKs/joda-time-2.1/joda-time-2.1-sources.jar
doc=/Users/josh.oneal/SDKs/joda-time-2.1/joda-time-2.1-javadoc.jar

Vous pouvez maintenant cliquer avec le bouton droit de la souris sur votre projet dans Eclipse et l'actualiser, puis sur Commande/Ctrl + Clic sur une classe telle que DateTime pour afficher son source.

36
WindRider

Lorsque vous utilisez Eclipse, vous pouvez résoudre ce problème en sélectionnant votre projet de bibliothèque et en sélectionnant Propriétés> Commander et exporter, puis en déplaçant votre dépendance src au-dessus de la dépendance gén. Vous pouvez également modifier manuellement votre fichier .classpath pour en faire de même. Les pièces jointes source doivent fonctionner après le nettoyage de ce projet. Crédits pour trouver la solution va à NightCrawler

10
Cristan

Notez la solution de contournement dans le commentaire 8

http://code.google.com/p/Android/issues/detail?id=27490#c8 . "Bonjour, j'ai la solution au problème décrit dans un commentaire 3:

  1. Déplacez le contenu du dossier libs vers lib car ADT 17 ajoute automatiquement tous les fichiers JAR du répertoire libs sous les dépendances Android.
  2. Ajoutez des dépendances à partir de votre répertoire lib en tant que dépendance Eclipse normale (l'ancienne méthode avant ADT 17). Liez les fichiers JAR avec leurs fichiers JAR source ou Javadoc.
  3. Dans Propriétés du projet -> Chemin de construction Java -> Ordre et exportation, cochez toutes les dépendances ajoutées à inclure dans les fichiers de classe du projet.
  4. Sélectionnez Outils Android> Propriétés du projet de réparation "
3
Stefan Rasmusson

J'ai finalement trouvé la solution la plus simple et la plus simple.

CECI IS UTILISANT L'IDE, ET FONCTIONNERA TOUJOURS. LA SOLUTION LA PLUS SIMPLE.

Si vous avez une structure complexe dans laquelle un projet de bibliothèque utilise une bibliothèque et que ce projet de bibliothèque est utilisé pour votre projet, etc. Ou en tout cas ... faites ceci pour résoudre ce problème:

Importez dans Eclipse la bibliothèque dans laquelle vous souhaitez voir le code source pour le processus de débogage. 

Marquez l'option Is Library en cliquant avec le bouton droit de la souris sur le projet> Propriétés> Android. 

Accédez ensuite à tous les projets de bibliothèque utilisant cette bibliothèque, Et cliquez avec le bouton droit de la souris sur> Projet> Propriété> Android> Ajouter> et sélectionnez votre bibliothèque.

Ensuite, accédez à votre projet et au projet de bibliothèque qui se trouve dans Projet> Propriétés> Android> Nom de la bibliothèque, cliquez sur Supprimer, puis rajoutez-le à nouveau pour pouvoir assumer les modifications apportées au projet de bibliothèque. 

Et c'est tout. Il suffit d'utiliser le projet de la bibliothèque elle-même plutôt que d'utiliser le fichier jar de la bibliothèque dont vous voulez voir le code source. 

2
Sterling Diaz

Avait le même problème en utilisant javax.mail pour accéder à gmail. Selon ce lien (http://stackoverflow.com/questions/6546926/could-not-find-class-error-when-trying-to-upload-a-video-to-youtube-using-the-Gd), il semble y avoir une sorte de problème avec cela et Android.

Je l'ai résolu en utilisant ces fichiers JAR, ici: http://code.google.com/p/javamail-Android/

2
Britc

Essayez aussi cette solution: allez dans le dossier du projet et ouvrez le fichier .classpath. Ici, commandez à nouveau classpathentry de cette façon

<?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>

Le premier est <classpathentry kind="src" path="src"/> et le second - <classpathentry kind="src" path="gen"/>. Dans mon cas, cela résout tous les problèmes.

0
validcat