我在 Apache netbeans 10 上使用 JDK 11。
The main
该方法自 java 9 起已被弃用,并标记为删除(如果没有)选择 https://docs.oracle.com/en/java/javase/11/docs/api/jdk.javadoc/jdk/javadoc/doclet/package-summary.html
我在命令行中的所有尝试都以
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"});
I get:
javadoc: error - Doclet class pk.TestVarElement does not contain a start method
Start
方法已弃用并替换为run
方法,之前的设置适用于 java 8 及更早版本,我想要 9、10、11 的等效设置。
我查看了文档文档工具 https://docs.oracle.com/en/java/javase/11/docs/api/java.compiler/javax/tools/DocumentationTool.html和相关材料,但我没有找到一个有效的例子。
有什么方法可以以编程方式运行 Doclet/DocletEnvironment 或从命令行运行工作示例吗?
假设您正在尝试以编程方式运行 Javadoc,jdk.javadoc https://docs.oracle.com/en/java/javase/11/docs/api/jdk.javadoc/module-summary.html模块文档描述了执行此操作的方法:
javadoc
该模块提供了相当于命令行访问javadoc通过工具提供者 https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/spi/ToolProvider.html and Tool https://docs.oracle.com/en/java/javase/11/docs/api/java.compiler/javax/tools/Tool.html服务提供商接口 (SPI),以及通过文档工具 https://docs.oracle.com/en/java/javase/11/docs/api/java.compiler/javax/tools/DocumentationTool.html SPI.
可以通过调用来获取工具的实例ToolProvider.findFirst https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/spi/ToolProvider.html#findFirst(java.lang.String) or the 服务加载器 https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/ServiceLoader.html与名字"javadoc"
.
根据您之前的代码和您的编辑,您不需要以下功能DocumentationTool
SPI。这ToolProvider
SPI应该足够了。正如文档中提到的(以及评论中的@AlanBateman),您可以获得ToolProvider
使用以下实例:
ToolProvider javadoc = ToolProvider.findFirst("javadoc").orElseThrow();
然后您可以调用其中之一run
具有您选择的 out/err 流和所需参数的方法。这些参数与您用于不受支持的参数相同Main.execute
您当前正在使用的 API。
int result = javadoc.run(System.out, System.err, /* ... your args ... */);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)