1

我在 Apache netbeans 10 上使用 JDK 11。

main方法自 java 9 以来已被弃用,并标记为在没有替代方法的情况下删除

我在命令行中的所有尝试都以

javadoc: error - Cannot find doclet class Exception

当我尝试:

com.sun.tools.javadoc.Main.execute (new String[]{"-doclet",TestVarElement.class.getName(),"C:\\Users\\Super3\\Documents\\NetBeansProjects\\MyProject\\src\\pk\\TestVarElement.java"});

我得到:

javadoc: error - Doclet class pk.TestVarElement does not contain a start method

Start方法被贬低并被run方法取代,以前的设置适用于 java 8 及更早版本,我想要 9、10、11 的等价物。

我查看了 DocumentationTool 的文档和相关材料,但没有找到一个工作示例。

有什么方法可以以编程方式运行 Doclet/DocletEnvironment 或从命令行运行一个工作示例?

4

1 回答 1

6

假设您正在尝试以编程方式运行 Javadoc,jdk.javadoc模块文档描述了这样做的方法:

文档

该模块提供等效于通过ToolProvider工具服务提供者接口 (SPI) 对javadoc的命令行访问,并通过DocumentationTool SPI提供更灵活的访问。

可以通过调用ToolProvider.findFirst或名为的服务加载器"javadoc"来获取工具的实例。

根据您之前的代码和您的编辑,您不需要DocumentationToolSPI 的功能。ToolProviderSPI应该足够了。如文档中所述(以及评论中的@AlanBateman),您可以ToolProvider使用以下方法获取实例:

ToolProvider javadoc = ToolProvider.findFirst("javadoc").orElseThrow();

run然后,您使用您选择的 out/err 流和所需的参数调用其中一种方法。参数与您Main.execute 当前使用的不受支持的 API 相同。

int result = javadoc.run(System.out, System.err, /* ... your args ... */);
于 2019-01-04T14:32:49.683 回答