Javadoc en JDK 8: “elemento de cierre automático no permitido” no válido

3 minutos de lectura

Avatar de usuario de JE42
JE42

¿Cuáles son las mejores soluciones cuando se ejecuta javadoc usando JDK 8 y uno recibe este error?

Parece que para JDK 8 se ha decidido que etiquetas como <br /> y <p /> debería generar errores, porque son HTML 4 inválidos (estrictos). vea la lista de correo de discusión JDK aquí

Me pregunto, porque solo quería compilar un proyecto Java usando maven y tropecé con este problema. Por supuesto, puedo presentar un ticket con el proyecto (y supongo que lo haré), pero sería genial si hubiera una forma de desactivar este comportamiento (para una máquina). De lo contrario, espero que muchos proyectos deban corregirse antes de que puedan construirse en JDK 8 sin problemas.

  • ¿Funciona -Xdoclint:none?

    – Ajay George

    25/09/2014 a las 22:50

  • Buscar en Google esta opción arrojó un enlace muy bueno: blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html

    – JE42

    25/09/2014 a las 23:09

  • posible duplicado de JDK8 y Javadoc se ha vuelto muy estricto

    – José

    17 de diciembre de 2014 a las 13:27

  • Las causas en el artículo vinculado son diferentes a la causa que provocó estas preguntas.

    – JE42

    17 de diciembre de 2014 a las 16:09

  • Relacionado. Obtener los mismos tipos de error de maven: stackoverflow.com/questions/15886209/…

    – AlikElzin-kilaka

    20 de septiembre de 2015 a las 6:24

Para esos dos casos particulares, creo que la acción recomendada es sustituirlos por <p>. Este es el enlace a la documentación de Oracle.

Avatar de usuario de Xelian
Xelian

Para eliminar los errores en el JavaDocs solo reemplaza:

  • <p/> con tan solo <p>
  • <br/> con tan solo <br>

Todo funciona bien después de la corrección de forma excepcional.

  • El simple reemplazo de

    con

    dará lugar a una serie de advertencias de etiquetas p vacías. Voté a favor porque esto era mejor que las otras respuestas, pero aún así agregué una solución más completa como respuesta.

    –Ralph Ritoch

    5 de junio de 2018 a las 10:32


Tomado de “Novedades en JDK 8” de oracle.com:

La herramienta javac ahora tiene soporte para verificar el contenido de los comentarios de javadoc en busca de problemas que podrían generar varios problemas, como HTML no válido o problemas de accesibilidad, en los archivos que se generan cuando se ejecuta javadoc. La característica está habilitada por la nueva opción -Xdoclint. Para obtener más detalles, consulte el resultado de ejecutar “javac -X”. Esta característica también está disponible en la herramienta javadoc y está habilitada allí de forma predeterminada.

Ahora hice lo que me dijo que hiciera. En JDK 7, la salida de “javac -X” no menciona la opción -Xdoclint. Sin embargo, en JDK 8, da:

 -Xdoclint:(all|none|[-]<group>)[/<access>]
    Enable or disable specific checks for problems in javadoc comments,
    where <group> is one of accessibility, html, missing, reference, or syntax,
    and <access> is one of public, protected, package, or private.

Entonces, ejecute la utilidad Javadoc de la siguiente manera:

javadoc.exe -Xdoclint:none <other options...>

En mi script, el error que mencionaste desapareció al usar esta opción.

  • Si eso es correcto. Sin embargo, javdoc de JDK 7 fallará con esta opción, lo que significa que debe detectar soporte para la nueva opción. Al final, terminé arreglando el html.

    – JE42

    21 de enero de 2015 a las 15:33

  • Si el proyecto usa maven, puede usar perfiles que se activan solo para jdk8. Probablemente sea mejor simplemente corregir el HTML si puede y presentar un error con el proyecto.

    – Adam Gent

    18 de febrero de 2015 a las 16:21

Avatar de usuario de Ralph Ritoch
ralph ritoch

Si bien es posible deshabilitar la verificación de errores con la opción -Xdoclint, no repara el problema, solo lo oculta. Para hacer documentos HTML4 válidos, las siguientes sustituciones son correctas.

  • Reemplace las etiquetas br de cierre automático con etiquetas br regulares (
    con
    )
  • Reemplace las etiquetas p vacías con etiquetas br (

    con
    )
  • Asegúrese de que todas las etiquetas p tengan contenido y estén cerradas (

    … con

    )

¿Ha sido útil esta solución?