gpt4 book ai didi

java - com.sun.tools.javadoc.Main.execute 在 jdk 11 中运行 Doclet 的替代方法是什么?

转载 作者:行者123 更新时间:2023-11-29 08:24:44 24 4
gpt4 key购买 nike

我在 Apache netbeans 10 上使用 JDK 11。

main 方法从 java 9 开始被删除,并在没有 alternative 的地方标记为删除。

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

结束
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 的文档和相关 Material ,但我没有找到一个有效的例子。

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

最佳答案

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

javadoc

This module provides the equivalent of command-line access to javadoc via the ToolProvider and Tool service provider interfaces (SPIs), and more flexible access via the DocumentationTool SPI.

Instances of the tools can be obtained by calling ToolProvider.findFirst or the service loader with the name "javadoc".

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

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

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

int result = javadoc.run(System.out, System.err, /* ... your args ... */);

关于java - com.sun.tools.javadoc.Main.execute 在 jdk 11 中运行 Doclet 的替代方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54040274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com