【问题标题】:How can I debug a Doclet in Eclipse?如何在 Eclipse 中调试 Doclet?
【发布时间】:2011-08-20 00:37:40
【问题描述】:

我正在创建一个自定义 doclet,我想使用 Javadoc 插件在我的 Maven 构建中运行,但现在我想在 Eclipse 中测试/调试 Doclet。我怎样才能做到这一点?

我必须以编程方式调用 javadoc 吗?怎么做?

【问题讨论】:

  • 肖恩,好问题:我面临着调试 doclet 的同样挑战;尽管来自 Eclipse 开发组的消息指出了一个非常丑陋的方法,但我认为它花了 30 分钟,但它确实有效。如果有人找到更简单的方法,请发布:-)。无论如何,为问题和链接 +1 肖恩。
  • 问题中的链接已损坏
  • 是的,删除它。反正很糟糕

标签: java eclipse debugging doclet


【解决方案1】:

您可以简单地在您的 doclet 中创建一个 main 方法并调用(示例,请参阅完整的 cmdling 参考):

public class MyDoclet extends Doclet {

    public static void main(String[] args) {
        com.sun.tools.javadoc.Main.execute("-doclet " + MyDoclet.class.getName());
    }
}

这也适用于调试器。

您可能还必须添加包含解析实际代码所需的所有 jar 依赖项的 -classpath 参数。

【讨论】:

  • 你需要至少从 Java 8 开始调用com.sun.tools.javadoc.Main.execute(new String[] { "-doclet " + MyDoclet.class.getName() });,否则编译器会失败并显示The method execute(String[]) is ambiguous for the type Main
【解决方案2】:

如果你运行的是JDK v1.8,可能需要使用如下代码sn -p:

Main.execute(docletFqcn.getClass().getClassLoader(), "-doclet", docletFqcn, javaSourceFilePath);

其中docletFqcn 是您的Doclet 类的全限定类名,javaSourceFilePath 是要处理的Java 文件的位置。

【讨论】:

    【解决方案3】:

    我收到@Jan 回答的错误消息

    Error:(13, 35) java: reference to execute is ambiguous
      both method execute(java.lang.String...) in com.sun.tools.javadoc.Main and method execute(java.lang.String,java.lang.String...) in com.sun.tools.javadoc.Main match
    

    更改这些代码后,它运行良好

    com.sun.tools.javadoc.Main.execute(new String[]{
                    "-doclet", CustomDoclet.class.getName(),
                    "path/to/src/XXX.java"
            });
    

    【讨论】:

    • 这仅在使用 start 方法时有效,自 9 以来,run 现在已弃用该方法。
    猜你喜欢
    • 2018-12-25
    • 2013-01-09
    • 2011-07-20
    • 2011-05-15
    • 1970-01-01
    • 2022-12-12
    • 2014-04-27
    • 2015-11-20
    • 1970-01-01
    相关资源
    最近更新 更多