在 jdk 11 中运行 Doclet 的 com.sun.tools.javadoc.Main.execute 的替代方案是什么?

2024-03-27

我在 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".

根据您之前的代码和您的编辑,您不需要以下功能DocumentationToolSPI。这ToolProviderSPI应该足够了。正如文档中提到的(以及评论中的@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(使用前将#替换为@)

在 jdk 11 中运行 Doclet 的 com.sun.tools.javadoc.Main.execute 的替代方案是什么? 的相关文章

  • Oracle的服务器JRE包含JDK?

    我刚刚下载了适用于 Java SE 7 的 Oracle Server JRE link http www oracle com technetwork java javase downloads server jre7 downloads
  • 如何通过无头活动处理静默 SEND 意图

    正如提问的用户所说 Android 上的默认浏览器如何发送 SEND 意图 https stackoverflow com questions 3320930 how does the default browser on android
  • Netbeans:如何从“设计”GUI 构建器向 JTable 添加 valueChanged 侦听器?

    我右键单击 JTable 并将一些代码插入到 后侦听器代码 中 结果很糟糕 我没有看到添加选项 table getSelectionModel addListSelectionListener new ListSelectionListen
  • 使用递归查找数组中的最大值

    对于我被要求解决的问题之一 我使用 for 循环找到了数组的最大值 所以我尝试使用递归来找到它 这就是我想到的 public static int findMax int a int head int last int max 0 if h
  • JMS队列消息接收顺序

    我按顺序在同一目标中添加两条 JMS 消息 这两条消息的接收顺序是否与我添加它们的顺序相同 或者是否有可能进行相反的排序 即首先检索目的地中首先接收到的消息 我将添加到目的地 producer send Msg1 producer send
  • 关于线程的停止

    我开发了一个代码 它将在执行时启动两个线程 public class MyThread1 extends Thread extend thread class public synchronized void run synchronize
  • 在进行字符识别之前使用 OpenCV 进行图像预处理(超正方体)

    我正在尝试开发简单的 PC 应用程序用于车牌识别 Java OpenCV Tess4j 图像不是很好 进一步它们会很好 我想对超立方体图像进行预处理 但我被困在车牌检测 矩形检测 上 我的步骤 1 源图像 Mat img new Mat i
  • 如何在 El Capitan (OS X 10.11) 中设置 Android Studio?

    全新安装 El Capitan 10 11 尝试安装 Android Studio 版本 1 21 Error Android Studio was unable to find a valid JVM Please download it
  • 比 O(n) 更好的范围交集算法?

    范围交集是一个简单但不平凡的问题 已经回答过两次了 查找数字范围交集 https stackoverflow com questions 224878 find number range intersection 比较日期范围 https
  • mapFragment.getMapAsync 处的 NullPointerException

    在解决了与我的标题相关的问题后 我找不到问题的解决方案 我有一个NullPointerException at mapFragment getMapAsync 下面是我的MapActivity code package com exampl
  • 使用 lsof 对“打开的文件过多”进行故障排除

    我有一个在 Linux 上运行的 Java 应用程序 PID 为 25426 运行时lsof p 25426 我注意到 java 25426 uid 420w FIFO 0 8 0t0 273664482 pipe java 25426 u
  • “找不到符号”或“无法解析符号”错误是什么意思?

    请解释以下有关 找不到符号 无法解析符号 或 找不到符号 错误 Java 中 的信息 他们的意思是什么 哪些因素会导致它们 程序员如何修复它们 这个问题旨在对 Java 中的这些常见编译错误进行全面的问答 0 这些错误之间有什么区别吗 并不
  • 如何在 selenium Chrome 功能中设置默认下载目录?

    请查找以下具有 chrome 功能的代码 事实上浏览器并没有将文件下载到指定的路径 private static DesiredCapabilities getChromeCapabilities throws Exception Stri
  • java中的new关键字是多余的吗?

    我来自 C 所以 java 的一个特性我不太理解 我读过所有对象都必须使用关键字创建new 但基元除外 现在 如果编译器可以识别原始类型 并且不允许您在不调用其构造函数的情况下创建对象new 有这个关键字的原因是什么new根本吗 有人可以提
  • 通常可重用的注释或公共注释?

    有没有常用的注释 类似于 commons lang 如果没有 您是否见过在任何开源应用程序开发中有效使用注释 不是内置注释 的情况 我记得 Mifos 用它来进行交易 Mohan i think 休眠验证器 http www hiberna
  • 将 JSON 与嵌套数组和 json 进行比较(数组顺序无关紧要)

    你好 我正在尝试比较java中的两个json 每个键可以包含一个json对象或json对象数组 并且它们中的每个也可以是数组或json 这是 Json 的示例 id 123123asd123 attributes name apps val
  • 有丰富的领域模型示例吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个简单的示例来说明使用富域模型的好处 理想情况下 我想要一个之前和之后的代码列表 应该尽可能
  • Spring MVC - 两次提供内容

    我已经花了一周时间寻找有关如何将内容服务器到我的网页的指导 两次 因为使用 Model 或 ModelAndView 切断内容一次可以工作 但如果用户再次与页面交互 我希望它加载更多内容同一页 Java Spring 后端方法 Get 有效
  • Spring-WS WSDL生成问题

    我正在尝试制作一个非常简单的 Web 服务 但在让 spring 生成正确的 wsdl 时遇到一些困难 我已尽力复制此示例春季教程 http static springsource org spring ws sites 2 0 refer
  • 如何在jsf页面中嵌入java代码?

    我有 一个名为 LoginBean 的托管 bean 名为 login xhtml 的 JSF 页面 在这个 jsf 页面中 我有一个登录表单 在managebean 内部我有一个loginCheck 函数 public void logi

随机推荐