为什么我不能导入 jdk.javadoc.doclet 包?

问题描述

我想为 JavaDoc 制作一个自定义的 doclet,我最初尝试为这个应用程序使用 com.sun.javadoc 包。我成功地创建了一个 doclet 并将其与 JDK8 一起使用,但是使用 JDK12 执行此操作会警告我该类已被弃用并且很快将不再受支持

我在另一台装有 OpenJDK15 的计算机上使用 JavaDoc 尝试了相同的 doclet(运行 java --version 给了我以下输出:)

openjdk 15.0.1 2020-10-20
OpenJDK Runtime Environment (build 15.0.1+9-18)
OpenJDK 64-Bit Server VM (build 15.0.1+9-18,mixed mode,sharing)

它真的不支持了:(我无法使用它,它给我一条消息说这个 doclet 不受支持

经过一番研究,我发现新的 jdk 使用 jdk.javadoc.doclet API 来创建 doclet。我使用上面的类创建了一个基本的 doclet,它实际上什么都不做,只是实现了所有方法并尝试编译,但是编译器给了我一个错误,说 package jdk.javadoc.doclet does not exist

我使用 IntelliJ 作为我的 IDE,但它没有通过它的 IntelliSense 显示任何错误。 IntelliJ 认为该包存在,甚至为我提供了该包类中方法代码突出显示

解决方法

请确保您的开发 IDE 中的 JDK,即 Eclipse、Intellij,使用与您的 PATH 变量相同的 JDK。您可以通过检查 IDE 的相应设置的属性来验证这一点。您的 PC 上可能安装了多个版本的 JDK,并且您的开发 ide 使用的版本与系统版本中的版本不同。在编译源代码时,遇到这样的问题会在 IDE 内部产生问题。

,

解决方案非常简单。我只需要使代码模块化(即,我需要在我的项目中添加一个 module-info.java 文件)并在其中添加 requires jdk.javadoc 行以使代码运行而不会出现任何错误。