Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Eclipse中调试Doclet?_Java_Eclipse_Debugging_Doclet - Fatal编程技术网

Java 如何在Eclipse中调试Doclet?

Java 如何在Eclipse中调试Doclet?,java,eclipse,debugging,doclet,Java,Eclipse,Debugging,Doclet,我正在创建一个自定义doclet,我想在Maven构建中使用Javadoc插件运行它,但现在我想在Eclipse中测试/调试doclet。我该怎么做 我必须以编程方式调用javadoc吗?如何创建?您只需在doclet中创建一个main方法并调用(示例,请参阅完整的cmdling参考): 这也适用于调试器 您可能还必须添加-classpath参数,该参数包含解析实际代码所需的所有jar依赖项。我收到了带有@Jan answer的错误消息 Error:(13, 35) java: referenc

我正在创建一个自定义doclet,我想在Maven构建中使用Javadoc插件运行它,但现在我想在Eclipse中测试/调试doclet。我该怎么做


我必须以编程方式调用javadoc吗?如何创建?

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

这也适用于调试器


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

我收到了带有@Jan answer的错误消息

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"
        });

如果您运行的是JDK v1.8,则可能需要使用以下代码段:

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

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

Sean,好问题:我面临调试Doclet的同样挑战;尽管来自Eclipse开发组的消息指出了一个非常丑陋的方法,但我认为它花了我30分钟的时间,但它是有效的。如果有人找到更简单的方法,请发布:-)。不管怎样,问题和链接+1 Sean。问题中的链接是brokentrue,删除它。不管怎样,这很糟糕,它只在使用
start
方法时才起作用,从9开始,
run
就不再适用了。您需要调用
com.sun.tools.javadoc.Main.execute(新字符串[]{“-doclet”+MyDoclet.class.getName())
至少从Java 8开始,否则编译器会失败,方法execute(String[])对于Main类型是不明确的
Main.execute(docletFqcn.getClass().getClassLoader(), "-doclet", docletFqcn, javaSourceFilePath);