我在Apache netbeans 10上使用JDK 11。
从Java 9开始,main
方法已被废弃,并标记为没有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的文档和相关材料,但没有找到一个可行的示例。
有什么方法可以通过编程方式运行Doclet / DocletEnvironment或从命令行运行示例吗?
答案 0 :(得分:3)
假设您要尝试以编程方式运行Javadoc,则https://developers.facebook.com/tools/debug/og/object/模块文档描述了这样做的方法:
javadoc
此模块等效于通过
jdk.javadoc
和ToolProvider服务提供商接口(SPI)进行 javadoc 的命令行访问,并通过{{ 3}} SPI。可以通过调用Tool或名称为
DocumentationTool
的{{3}}来获得工具的实例。
根据您之前的代码和所做的编辑,您不需要ToolProvider
SPI的功能。 ToolProvider
SPI应该足够。如文档中所述(并在注释中使用@AlanBateman),您可以使用以下命令获取ToolProvider javadoc = ToolProvider.findFirst("javadoc").orElseThrow();
实例:
run
然后,使用您选择的out / err流和所需的参数调用Main.execute
方法之一。参数与您当前正在使用的不受支持的int result = javadoc.run(System.out, System.err, /* ... your args ... */);
API所使用的参数相同。
std::cout << sizeof(std::underlying_type<A>::type);