jdk 11 中 com.sun.tools.javadoc.Main.execute 与 运行 Doclet 的替代项是什么?
What is the alternative of com.sun.tools.javadoc.Main.execute to run Doclet in jdk 11?
我在 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 的文档和相关材料,但没有找到一个有效的示例。
我们有什么方法可以 运行 以编程方式 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 ... */);
我在 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 的文档和相关材料,但没有找到一个有效的示例。
我们有什么方法可以 运行 以编程方式 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 ... */);