生成自定义 javadoc 时遇到问题; 'cannot find doclet'
Trouble with generating custom javadoc; 'cannot find doclet'
我正在尝试使用 Doclet
创建自定义 Javadoc 生成器,但我 运行 遇到了一些问题。
我正在关注 the official documentation,最初在我的项目中包含 tools.jar
文件时遇到了问题,但我设法解决了这个问题。
我现在的问题是,在 运行 这个命令之后...
javadoc -doclet ListClass -docletpath . MyClass.java
...我收到消息...
javadoc: error - Cannot find doclet class ListClass
正如我所说,我大部分时间都在遵循官方文档中的教程,但这里是我的代码以供参考。
ListClass.java
:
import com.sun.javadoc.*;
public class ListClass {
public static boolean start(RootDoc root) {
ClassDoc[] classes = root.classes();
for (int i = 0; i < classes.length; ++i) {
System.out.println(classes[i]);
}
return true;
}
}
和MyClass.java
:
/**
* Documentation for my class
*/
public class MyClass {
public static void main(String[] args) {
}
/**
* Documentation for my static void method
*
* @param param This is the parameter it takes in
*/
public static void myStaticVoidMethod(String param) {
}
}
所以我要问的是为什么我会收到上面发布的错误。如果有人能够提供更全面的 Doclet
工作原理指南,那也很棒。
注意:我正在为我的项目使用 IntelliJ IDE。这是我的目录结构:
- .想法
- ...
- 出来
- ...
- 来源
- ListClass.java
- MyClass.java
- JavadocGenerator.iml
您需要编译 ListClass 文件。类似于:
javac -d . ListClass.java -cp /path/to/tools.jar
Doclet 类 是工具 jar 的一部分,因此您需要将其作为编译时依赖项包含在内。
然后你的命令
javadoc -doclet ListClass -docletpath . MyClass.java
应该可以。
编辑
对于您的项目结构,如果您从根目录编译,请确保通过它们的子目录引用您的文件,并确保任何绝对 windows 路径都用双引号引起来:
javac -d . ./src/ListClass.java -cp "C:/Program Files/Java/jdk1.8.0_66/lib/tools.jar"
这将在项目的根目录下创建一个已编译的 ListClass 文件,并从那里使用您的 javadoc 命令:
javadoc -doclet ListClass -docletpath . ./src/MyClass.java
最好创建一个 类 目录来放置编译后的 类,而不是在项目的根目录中,但我只是在使用你的结构假如。有关详细信息,请参阅 javac and javadoc 的文档。
我正在尝试使用 Doclet
创建自定义 Javadoc 生成器,但我 运行 遇到了一些问题。
我正在关注 the official documentation,最初在我的项目中包含 tools.jar
文件时遇到了问题,但我设法解决了这个问题。
我现在的问题是,在 运行 这个命令之后...
javadoc -doclet ListClass -docletpath . MyClass.java
...我收到消息...
javadoc: error - Cannot find doclet class ListClass
正如我所说,我大部分时间都在遵循官方文档中的教程,但这里是我的代码以供参考。
ListClass.java
:
import com.sun.javadoc.*;
public class ListClass {
public static boolean start(RootDoc root) {
ClassDoc[] classes = root.classes();
for (int i = 0; i < classes.length; ++i) {
System.out.println(classes[i]);
}
return true;
}
}
和MyClass.java
:
/**
* Documentation for my class
*/
public class MyClass {
public static void main(String[] args) {
}
/**
* Documentation for my static void method
*
* @param param This is the parameter it takes in
*/
public static void myStaticVoidMethod(String param) {
}
}
所以我要问的是为什么我会收到上面发布的错误。如果有人能够提供更全面的 Doclet
工作原理指南,那也很棒。
注意:我正在为我的项目使用 IntelliJ IDE。这是我的目录结构:
- .想法
- ...
- 出来
- ...
- 来源
- ListClass.java
- MyClass.java
- JavadocGenerator.iml
您需要编译 ListClass 文件。类似于:
javac -d . ListClass.java -cp /path/to/tools.jar
Doclet 类 是工具 jar 的一部分,因此您需要将其作为编译时依赖项包含在内。
然后你的命令
javadoc -doclet ListClass -docletpath . MyClass.java
应该可以。
编辑
对于您的项目结构,如果您从根目录编译,请确保通过它们的子目录引用您的文件,并确保任何绝对 windows 路径都用双引号引起来:
javac -d . ./src/ListClass.java -cp "C:/Program Files/Java/jdk1.8.0_66/lib/tools.jar"
这将在项目的根目录下创建一个已编译的 ListClass 文件,并从那里使用您的 javadoc 命令:
javadoc -doclet ListClass -docletpath . ./src/MyClass.java
最好创建一个 类 目录来放置编译后的 类,而不是在项目的根目录中,但我只是在使用你的结构假如。有关详细信息,请参阅 javac and javadoc 的文档。