Abnaxos / markdown-doclet

A Doclet that allows the use of Markdown in JavaDoc comments.
GNU General Public License v3.0
319 stars 40 forks source link

Error: "Illegal group reference" #70

Closed greenlaw110 closed 7 years ago

greenlaw110 commented 7 years ago

I am building my project and encountered the following error:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:javadoc (gen-javadoc) on project act: An error has occurred in JavaDocs report generation:
[ERROR] Exit code: 1 - Picked up JAVA_TOOL_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
[ERROR] javadoc: error - In doclet class ch.raffael.doclets.pegdown.PegdownDoclet,  method start has thrown an exception java.lang.reflect.InvocationTargetException
[ERROR] java.lang.IllegalArgumentException: Illegal group reference
[ERROR] at java.util.regex.Matcher.appendReplacement(Matcher.java:857)
[ERROR] at ch.raffael.doclets.pegdown.Tags.insertInlineTags(Tags.java:134)
[ERROR] at ch.raffael.doclets.pegdown.Options.toHtml(Options.java:482)
[ERROR] at ch.raffael.doclets.pegdown.PegdownDoclet.defaultProcess(PegdownDoclet.java:358)
[ERROR] at ch.raffael.doclets.pegdown.PegdownDoclet.processMember(PegdownDoclet.java:319)
[ERROR] at ch.raffael.doclets.pegdown.PegdownDoclet.processClass(PegdownDoclet.java:304)
[ERROR] at ch.raffael.doclets.pegdown.PegdownDoclet.process(PegdownDoclet.java:221)
[ERROR] at ch.raffael.doclets.pegdown.PegdownDoclet.start(PegdownDoclet.java:136)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR] at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR] at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:310)
[ERROR] at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:189)
[ERROR] at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:366)
[ERROR] at com.sun.tools.javadoc.Start.begin(Start.java:219)
[ERROR] at com.sun.tools.javadoc.Start.begin(Start.java:205)
[ERROR] at com.sun.tools.javadoc.Main.execute(Main.java:64)
[ERROR] at com.sun.tools.javadoc.Main.main(Main.java:54)

Any idea?

greenlaw110 commented 7 years ago

never mind, it is triggered by javadoc of one of my java source code. I've smashed it although I don't know which part exactly caused the trouble.

greenlaw110 commented 6 years ago

Two years later I've got the same issue and happened to read my own issue report. Just to document what happened this time for future reference:

The issue is caused by using {@link $...} in the javadoc. Where $ is a class name. Somehow Markdown doclet is not able to handle that pattern.

Here is how to debug this kind of error:

  1. run mvn javadoc:javadoc to generate required javadoc scripts in target/site/apidoc dir. You will get error, but that's okay

  2. Add markdown doclet into your pom.xml file:

    <dependency>
      <groupId>ch.raffael.markdown-doclet</groupId>
      <artifactId>markdown-doclet</artifactId>
      <version>${markdown-doclet.version}</version>
    </dependency>
  1. add tools.jar into your module dependencies:

image

  1. Create whatever class with a main method, looks like:
public class DebugJavaDoc {
    public static void main(String[] args) {
        String[] sa = {"@options", "@packages"};
        com.sun.tools.javadoc.Main.execute(sa);
    }
}
  1. set the working directory in IDEA: image

  2. Set breakpoint in the error place and debug the class and then rock n roll!