Enlace Javadoc al método en otra clase

5 minutos de lectura

Actualmente estoy haciendo referencia a métodos en otras clases con esta sintaxis de Javadoc:

@see {@link com.my.package.Class#method()}

Y por lo que entiendo de la documentación, esta es la forma correcta de hacerlo. Pero ahora a la parte divertida, o frustrante. Cuando genero este javadoc, primero aparece el siguiente error:

warning - Tag @see:illegal character: "123" in "{@link com.my.package.Class#method()}"
warning - Tag @see:illegal character: "64" in "{@link com.my.package.Class#method()}"
warning - Tag @see: reference not found: {@link com.my.package.Class#method()}

El código HTML generado de esto es:

"," <code>com.my.package.Class#method()}</code> ","

Y por supuesto no tengo enlace. ¿Alguien puede decirme qué está pasando y algún consejo sobre cómo solucionarlo?

Según la tabla ASCII, los caracteres 123 y 64 para wold representan { y @, entonces, ¿por qué estos caracteres no son válidos cuando esta sintaxis es correcta según la documentación?

  • Solo para comprobar… ¿has leído la documentación del Generador de Javadoc? docs.oracle.com/javase/7/docs/technotes/tools/windows/…

    – Diogo Moreira

    5 de julio de 2013 a las 19:58

  • importaste com.my.package.Class en la clase está escrito este JavaDoc? los referencia no encontrada parece extraño Por otro lado, nunca los he usado combinados, pero existe la posibilidad de que @see y @link entran en conflicto entre sí, tomando eso @see genera su propia sección, no me sorprendería.

    – Fritz

    5 de julio de 2013 a las 20:07


  • @DiogoMoreira – No, no he leído sobre el motor, pero lo revisaré.

    – Roberto

    5 de julio de 2013 a las 20:17

  • @Gamb: por supuesto, no es mi entrada real de Javadoc;-) Sí, todas las importaciones están en su lugar.

    – Roberto

    5 de julio de 2013 a las 20:18

  • Se produce un error similar si coloca un hipervínculo sin formato como valor para el @see etiqueta en su javadoc. Para solucionarlo en este caso, envuelva el hipervínculo en un elemento de anclaje html: /** @see <a href="http://example.com">Example</a> */

    – ciber-monje

    31 de julio de 2015 a las 23:14

Para la etiqueta Javadoc @seeno necesitas usar @link; Javadoc creará un enlace para usted. Probar

@see com.my.package.Class#method()

Aquí hay más información sobre @see.

  • ¡Gracias por esto, acabo de probar esta solución y funciona bien! Pero he leído en tantos lugares que deberías usar el enlace en ver para que esto funcione, así que eso es un poco extraño…

    – Roberto

    5 de julio de 2013 a las 20:20

  • Puedes usar @link en otros lugares que Javadoc aún no se convierte en un enlace, por ejemplo, en la descripción de @paramen la descripción de @returnen la parte principal de la descripción, etc.

    – rgettman

    5 de julio de 2013 a las 20:21

  • cuando acabo de probar esto, muestra el método como texto sin formato, no se puede hacer clic como mi @see para un método local.

    – Jesse Boyd

    14/07/2017 a las 16:05

avatar de usuario
Jérôme Beau

Aparte de @seeuna forma más general de referirse a otra clase y posiblemente al método de esa clase es {@link somepackage.SomeClass#someMethod(paramTypes)}. Esto tiene la ventaja de ser utilizable en medio de una descripción de javadoc.

Desde el documentación javadoc (descripción de la etiqueta @link):

Esta etiqueta es muy similar a @see: ambas requieren las mismas referencias y aceptan exactamente la misma sintaxis para paquete.clase#miembro y etiqueta. La principal diferencia es que {@link} genera un enlace en línea en lugar de colocar el enlace en la sección “Ver también”. Además, la etiqueta {@link} comienza y termina con llaves para separarla del resto del texto en línea.

  • ¡Ah, la clave es usar el signo de almohadilla en lugar de un punto! ¡Gracias!

    – SM Biggs

    7 oct 2021 a las 14:25

Entonces, la solución al problema original es que no necesita las referencias “@see” y “{@link…}” en la misma línea. La etiqueta “@link” es autosuficiente y, como se indicó, puede colocarla en cualquier lugar del bloque javadoc. Así que puedes mezclar los dos enfoques:

/**
 * some javadoc stuff
 * {@link com.my.package.Class#method()}
 * more stuff
 * @see com.my.package.AnotherClass
 */

  • Esta debe ser una respuesta aceptada porque otras dos respuestas no muestran que ‘@link’ o ‘@see’ deben estar en un comentario de varias filas /** */ no en una sola fila

    – Stoycho Andreev

    31 de mayo de 2017 a las 10:14

  • @Francotirador, {@link } funciona bien en un comentario Javadoc de una sola fila, ¿quizás te refieres al hecho de que no funcionan con comentarios que comienzan con //? /** */ es Javadoc y es necesario para cualquier función de Javadoc.

    – Jasé

    13 de junio de 2017 a las 4:58

  • Sí, @Jase, conocí exactamente esto, el comentario debe ser /** */, pero no //

    – Stoycho Andreev

    13 de junio de 2017 a las 8:01

  • @Sniper No creo que sea necesario que esta sea la respuesta aceptada porque, para empezar, se trata de una pregunta de Javadoc; en general, se debe entender que Javadoc solo funciona en los comentarios de Javadoc.

    – Jasé

    14 de junio de 2017 a las 1:37

  • @Jase está de acuerdo con usted, pero creo que la fuente de información como Stackoverflow necesita explicaciones con ejemplos, no citas de la documentación de Oracle o alguna otra documentación, lo que obviamente no está claro. Esta respuesta es la única respuesta que tiene un ejemplo, las dos respuestas anteriores son comillas.

    – Stoycho Andreev

    14 de junio de 2017 a las 10:05

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad