我在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"
的服务加载程序来获取工具的实例。
根据您以前的代码和编辑,您不需要DocumentationTool
SPI的功能。ToolProvider
SPI应该足够了。正如文档中所提到的(以及评论中的@AlanStateman),您可以使用以下方法获得ToolProvider
实例:
ToolProvider javadoc = ToolProvider.findFirst("javadoc").orElseThrow();
然后,使用您选择的out/err流和所需的参数调用其中一个run
方法。参数与您当前使用的不受支持的Main.execute
API所使用的参数相同。
int result = javadoc.run(System.out, System.err, /* ... your args ... */);