簡體   English   中英

com.sun.tools.javadoc.Main.execute在jdk 11中運行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開始被刪除,並標記為刪除,其中沒有替代方法

我在命令行中的所有嘗試都結束了

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方法被depricated並由run方法替換,之前的設置適用於java 8及更早版本,我希望等效於9,10,11。

我查看了DocumentationTool的文檔和相關材料,但我沒有找到一個單獨的工作示例。

我們有什么方法可以以編程方式運行Doclet / DocletEnvironment或從命令行運行工作示例?

假設你要做的是以編程方式運行Javadoc, jdk.javadoc模塊文檔描述了這樣做的方法:

的javadoc

該模塊通過ToolProviderTool服務提供程序接口(SPI)提供與javadoc的命令行訪問等效,並通過DocumentationTool SPI提供更靈活的訪問。

可以通過調用ToolProvider.findFirst或名為"javadoc"服務加載程序來獲取工具的實例。

根據您之前的代碼和編輯,您不需要DocumentationTool SPI的功能。 ToolProvider SPI應該足夠了。 如文檔中所述(以及評論中的ToolProvider ),您可以使用以下命令獲取ToolProvider實例:

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

然后使用您選擇的out / err流和所需的參數調用其中一個run方法。 這些參數與您當前使用的不受支持的Main.execute API相同。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM