2010-10-03 10 views
5

J'ai créé une bibliothèque Java avec un fichier ant pour la construire en JAR. Lorsque j'utilise ce fichier JAR d'un autre projet Java, les noms des paramètres de méthode apparaissent comme indice de méthode Eclipse/autocomplete: arg0, arg1, arg ...Noms de paramètres de méthode Java à partir d'un fichier JAR dans Eclipse

par exemple, la méthode:

 void publishStatus(String jobId, int count); 

apparaît Comme:

 void publishStatus(String arg0, int arg1); 

Que manque-t-il?

Merci,

Modifier

On dirait que cela a déjà été discuté dans beaucoup plus de détails ici: Preserving parameter/argument names in compiled java classes

Répondre

4

Les noms d'arguments de méthode Java ne sont pas représentés dans le format de fichier de classe. Les parties pertinentes de la spécification JVM sont les sections 4.3.3 et 4.6. (Strictement, ils peuvent être dans certains cas, mais ils ne peuvent pas être inclus pour les interfaces, et ne seront pas inclus à moins que les options de compilation pertinentes ont été définies lors de la classe a été compilé.)

Dans la pratique, Eclipse peut aussi vous présenter avec les noms d'arguments de méthode s'il peut trouver et analyser le code source correspondant aux fichiers de classe. Dans le cas simple, vous pouvez résoudre ce problème en téléchargeant un fichier ZIP contenant le code source approprié, et en le joignant au JAR binaire.

FOLLOWUP re votre commentaire:

Je ne voulais pas dire d'inclure le dossier source dans le JAR (bien que cela fonctionne évidemment). Si vous consultez les propriétés Eclipse pour un fichier JAR dépendant, vous pouvez joindre le fichier JAR ou le répertoire source correspondant. (Je ne peux pas lancer Eclipse en ce moment pour vous donner des détails précis.) Quoi qu'il en soit, cette approche ne vous oblige pas à recompiler ou modifier le fichier JAR dépendant.

+0

J'ai remarqué qu'il y a eu beaucoup de discussion à ce sujet ici: http://stackoverflow.com/questions/939194/preserving-parameter-argument-names-in-compiled-java-classes – wsb3383

+0

... et merci! cela fonctionne, j'ai inclus le dossier source dans le JAR, je peux maintenant voir tous les noms dans les deux classes et interfaces :) – wsb3383

3

Vous devez avoir le compilateur java comprennent « des informations de débogage » lors de la compilation les classes, et recréer votre fichier jar.

Pour la fourmi, cela signifie que l'attribut debug="true" figure sur l'étiquette <javac ...>.

+0

merci. On dirait que cela fonctionne uniquement pour les classes, pas les interfaces. – wsb3383