web-dev-qa-db-fra.com

Qu'est-ce que la sortie d'avertissement «Attribut Ignorer les classes internes» lors de la compilation?

Je suis nouveau sur Android et j'utilise le Ical4j bibliothèque pour l'analyse des fichiers ICS (calendrier Outlook).

Cependant, lorsque je crée mon application dans Eclipse, l'avertissement suivant apparaît plusieurs fois dans la console:

[2010-07-22 15:58:31 - Google Calendar Upload] avertissement: Ignorer l'attribut InnerClasses pour une classe interne anonyme qui ne vient pas avec un attribut EnclosingMethod associé. (Cette classe a probablement été produite par un compilateur cassé.)

Quelles implications cela at-il? Comment puis-je résoudre ça?

41
RMK

Ceci est assez courant lors de l'inclusion de fichiers jar. Bien que l'avertissement ne vous inquiète pas si vous utilisez simplement l'API normalement, vous devriez pouvoir vous en débarrasser en compilant vous-même ical4j à partir de la source dans Eclipse (soit créez un nouveau pot, soit déposez simplement la source dans votre dossier source). Bien que je doive souligner qu'à moins que vous n'ayez réellement des problèmes, ce n'est pas quelque chose à craindre.

29
Nick

Si votre application et vos bibliothèques ont toutes été construites avec un nouveau JDK (7+) et que vous l'obtenez toujours, vous pouvez résoudre ce problème en disant à Proguard de conserver l'attribut de méthode englobante. Ajoutez simplement ce qui suit à vos règles Proguard:

-keepattributes EnclosingMethod

31
William

J'ai eu la même erreur lors de l'utilisation de la bibliothèque ksoap2.

Pour m'en débarrasser, j'ai téléchargé DJ Java Decompiler pour décompiler le fichier .jar en fichiers .Java. Après cela, j'ai compilé les fichiers .Java dans un fichier .jar en utilisant Eclipse.

4
Dominik Mohr

Mettre à jour les outils de construction et les bibliothèques de support vers la même version

1
kreker