1

I'm trying to use links to 3rd party libraries in my Java class docs, however javadoc tool cannot generate a link.

/**
* A link to 3rd party lib class {@link dagger.Lazy}
*/
public class MyCLass {
    /**
     * main desc 
     */
    static public void main() {
        return;
    }
} 

Then run javadoc tool:

javadoc -link https://dagger.dev/api/2.0/ ./MyClass.java

javadoc creates docs for MyClass, but cannot generate a link to dagger.Lazy, see log below:

Loading source file .\MyClass.java...
Constructing Javadoc information...
Building index for all the packages and classes...
Building tree for all the packages and classes...
.\MyClass.java:2: error: reference not found
* A link to 3rd party lib class {@link dagger.Lazy}
                                       ^
Generating .\package-summary.html...
Generating .\package-tree.html...
Generating .\overview-tree.html...
Building index for all classes...
Generating .\allclasses-index.html...
Generating .\allpackages-index.html...
Generating .\index-all.html...
Generating .\search.html...
Generating .\index.html...
Generating .\help-doc.html...
1 error

I also tried to use @see tag, but javadoc also didn't generate a link, without an error message.

What am I doing wrong?

Rom098
  • 2,445
  • 4
  • 35
  • 52

1 Answers1

1

Finally I realized my mistake - docs don't provide a class list, but module and package list. If you want to link your docs with some external docs using class or method names, you need to specify a classpath to the jar file, similar to javac. This is how javadoc will know about classes.

Here is the example:

javadoc -cp ./dagger-2.0.2.jar -link https://dagger.dev/api/2.0/ ./MyClass.java

Now javadoc knows about Dagger classes, and also knows where to link. {@link dagger.Lazy} will link to https://dagger.dev/api/2.0/dagger/Lazy.html

Rom098
  • 2,445
  • 4
  • 35
  • 52