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



我在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,或者从命令行运行一个工作示例?

假设您要做的是用程序运行Javadoc,jdk.javadoc模块文档描述了这样做的方法:

javadoc

该模块通过ToolProvider和Tool服务提供程序接口(SPI)提供了对javadoc的命令行访问,并通过DocumentationTool SPI提供了更灵活的访问。

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新