![](/img/trans.png)
[英]Not able to run a simple doclet program : package com.sun.javadoc does not exist
[英]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
該模塊通過ToolProvider和Tool服務提供程序接口(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.