2010-10-03 4 views
5

Creé una biblioteca Java con un archivo ant para construirla en un JAR. Cuando utilizo este archivo JAR de otro proyecto de Java, los nombres de los parámetros aparecen como método en Eclipse método de pista/autocompletar: arg0, arg1, arg ...Nombres de parámetros del método Java de un archivo JAR en Eclipse

por ejemplo, el método:

 void publishStatus(String jobId, int count); 

aparece como:

 void publishStatus(String arg0, int arg1); 

¿Qué me falta?

Gracias,

Editar

Parece que esto ya se ha discutido con más detalle aquí: Preserving parameter/argument names in compiled java classes

Respuesta

4

Los nombres de los argumentos del método Java no están representados en el formato de archivo de la clase. Las partes relevantes de la especificación de JVM son las secciones 4.3.3 y 4.6. (En sentido estricto, que pueden ser en algunos casos, pero no pueden ser incluidos para interfaces, y no serán incluidos a menos que se establecen las opciones del compilador pertinentes cuando se compiló la clase.)

En la práctica, Eclipse también puede le presentaremos los nombres de los argumentos del método si puede encontrar y analizar el código fuente correspondiente a los archivos de la clase. En el caso simple, puede solucionar esto descargando un archivo ZIP, etc. que contenga el código fuente relevante, y adjuntarlo al JAR binario.

FOLLOWUP re su comentario:

yo no era el sentido de incluir la carpeta de origen en el JAR (aunque, obviamente, que funciona). Si observa las propiedades de Eclipse para un archivo JAR dependiente, hay una forma de adjuntar el JAR o directorio de origen correspondiente. (No puedo ejecutar Eclipse ahora mismo para darle detalles precisos). De todos modos, este enfoque no requiere que recompile o cambie el JAR dependiente.

+0

Noté que ha habido mucha discusión sobre esto aquí: http://stackoverflow.com/questions/939194/preserving-parameter-argument-names-in-compiled-java-classes – wsb3383

+0

... ¡y gracias! esto funciona, incluí la carpeta fuente en el JAR, ahora puedo ver todos los nombres en ambas clases e interfaces :) – wsb3383

3

Es necesario tener el compilador de Java incluyen "información de depuración" al compilar las clases, y recrear su archivo jar.

Para hormiga esto significa que tiene un atributo debug="true" en la etiqueta <javac ...>.

+0

gracias. Parece que esto funciona solo para clases, no para interfaces. – wsb3383

Cuestiones relacionadas