Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8361316

javadoc tool fails with an exception for an inheritdoc on throws clause of a constructor

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • 26
    • 22
    • tools
    • None

      Consider this trivial class:

      /**
       * A simple class
       */
      public class A {

          /**
           * Very simple constructor
           *
           * @throws Exception {@inheritDoc}
           */
          public A() throws Exception {
          }
      }

      Running javadoc tool against it:

      javadoc A.java

      results in:

      Loading source file A.java...
      Constructing Javadoc information...
      Building index for all the packages and classes...
      Standard Doclet version 24+36-3646
      Building tree for all the packages and classes...
      Generating ./A.html...
      error: An internal exception has occurred.
          (java.lang.IllegalArgumentException: A(), <init>, CONSTRUCTOR, com.sun.tools.javac.code.Symbol$MethodSymbol@3d921e20)
      Please file a bug against the javadoc tool via the Java bug reporting page
      (https://bugreport.java.com) after checking the Bug Database (https://bugs.java.com)
      for duplicates. Include error messages and the following diagnostic in your report. Thank you.
      java.lang.IllegalArgumentException: A(), <init>, CONSTRUCTOR, com.sun.tools.javac.code.Symbol$MethodSymbol@3d921e20
          at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.Utils$Overrides.<init>(Utils.java:2769)
          at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.Utils.lambda$overriddenMethods$0(Utils.java:2755)
          at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.DocFinder.search0(DocFinder.java:107)
          at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.DocFinder.find(DocFinder.java:76)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.taglets.ThrowsTaglet.expandShallowly(ThrowsTaglet.java:639)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.taglets.ThrowsTaglet.outputAnExceptionTagDeeply(ThrowsTaglet.java:433)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.taglets.ThrowsTaglet.outputAnExceptionTagDeeply(ThrowsTaglet.java:345)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.taglets.ThrowsTaglet.getAllBlockTagOutput0(ThrowsTaglet.java:251)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.taglets.ThrowsTaglet.getAllBlockTagOutput(ThrowsTaglet.java:184)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.taglets.TagletWriter.getBlockTagOutput(TagletWriter.java:265)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.getBlockTagOutput(HtmlDocletWriter.java:396)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.getBlockTagOutput(HtmlDocletWriter.java:382)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.addTagsInfo(HtmlDocletWriter.java:368)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ConstructorWriter.addTags(ConstructorWriter.java:246)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ConstructorWriter.buildTagInfo(ConstructorWriter.java:184)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ConstructorWriter.buildConstructorDoc(ConstructorWriter.java:120)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ConstructorWriter.buildDetails(ConstructorWriter.java:94)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ClassWriter.buildMemberDetails(ClassWriter.java:338)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ClassWriter.buildClassDoc(ClassWriter.java:138)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ClassWriter.buildPage(ClassWriter.java:115)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:414)
          at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:246)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:211)
          at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.generateFiles(AbstractDoclet.java:179)
          at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDoclet.generateFiles(HtmlDoclet.java:345)
          at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.run(AbstractDoclet.java:82)
          at jdk.javadoc/jdk.javadoc.doclet.StandardDoclet.run(StandardDoclet.java:109)
          at jdk.javadoc/jdk.javadoc.internal.tool.Start.parseAndExecute(Start.java:588)
          at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:399)
          at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:348)
          at jdk.javadoc/jdk.javadoc.internal.tool.Main.execute(Main.java:57)
          at jdk.javadoc/jdk.javadoc.internal.tool.Main.main(Main.java:46)


      The issue is reproducible in all JDK versions starting JDK 22. It reproduces even in latest JDK 25 EA as well JDK mainline.

      The javadoc tool completes successfully, with a mere warning about the class' constructor javadoc, on JDK 21 or prior versions as follows:

      Loading source file A.java...
      ...
      Standard Doclet version 21+35-2513
      ...
      Generating ./A.html...
      A.java:11: warning: @inheritDoc used but A() does not override or implement any method.
          public A() throws Exception {
                 ^
      Generating ./package-summary.html...
      Generating ./package-tree.html...
      ...
      1 warning

            hannesw Hannes Wallnoefer
            jpai Jaikiran Pai
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: