【问题标题】:Trouble with generating custom javadoc; 'cannot find doclet'无法生成自定义 javadoc; '找不到 doclet'
【发布时间】:2016-08-15 03:43:26
【问题描述】:

我正在尝试使用 Doclet 创建自定义 Javadoc 生成器,但遇到了一些问题。

我正在关注the official documentation,最初在我的项目中包含tools.jar 文件时遇到了问题,但我设法解决了这个问题。

我现在的问题是运行这个命令后...

javadoc -doclet ListClass -docletpath .  MyClass.java

...我收到消息...

javadoc: 错误 - 找不到 doclet 类 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。这是我的目录结构:

  • .idea
    • ...
    • ...
    • ListClass.java
    • MyClass.java
  • JavadocGenerator.iml

【问题讨论】:

    标签: java javadoc doclet


    【解决方案1】:

    您需要编译您的 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
    

    最好创建一个类目录来放置已编译的类,而不是在项目的根目录中,但我只是在使用您提供的结构。有关详细信息,请参阅 javacjavadoc 的文档。

    【讨论】:

    • 谢谢。运行javac -d . ListClass.java -cp C:/Program Files/Java/jdk1.8.0_66/lib/tools.jar 给了我javac: file not found: ListClass.java,所以我将其更改为... src/ListClass.java ...(请参阅我更新的目录层次结构问题)。现在运行这个新命令(使用src/)会给我错误javac: invalid flag: Files/Java/jdk1.8.0_66/lib/tools.jar
    • 你已经很接近你所拥有的了。我认为您只需将路径放在引号中,并确保您从正确的目录执行 javac 和 javadoc .. 请参阅我的更新。
    • 运行 javac 我知道warning: com\sun\javadoc\RootDoc.class(com\sun\javadoc:RootDoc.class): major ver sion 51 is newer than 50, the highest major version supported by this compiler. It is recommended that the compiler be upgraded. 对此有什么想法吗?
    • 命令行工作,但是我们如何在 IntelliJ IDE 中做这些事情呢?我在 Generate JavaDoc 对话框中找不到任何编译 doclet 的选项。
    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 2018-06-20
    • 2019-03-16
    • 2019-09-01
    • 2019-02-25
    • 2013-01-20
    • 2010-12-01
    • 2016-07-17
    相关资源
    最近更新 更多