The javadoc Command

名称

javadoc - 从Java源文件生成API文档的HTML页面

概要

javadoc [选项] [包名] [源文件] [@文件]

选项
指定由空格分隔的命令行选项。请参阅标准javadoc选项额外javadoc选项标准文档生成器选项标准文档生成器的额外选项
包名

指定要文档化的包的名称,用空格分隔,例如java.lang java.lang.reflect java.awt。如果要同时文档化子包,则使用-subpackages选项指定包。

默认情况下,javadoc在当前目录和子目录中查找指定的包。使用-sourcepath选项指定要查找包的目录列表。

源文件
指定要文档化的Java源文件的名称,用空格分隔,例如Class.java Object.java Button.java。默认情况下,javadoc在当前目录中查找指定的类。但是,您可以指定类文件的完整路径并使用通配符,例如/home/src/java/awt/Graphics*.java。您还可以相对于当前目录指定路径。
@文件
指定包含javadoc工具选项、包名称和源文件名称列表的文件名称。

描述

javadoc工具解析一组Java源文件中的声明和文档注释,并生成相应的HTML页面,描述(默认情况下)公共和受保护的类、嵌套和未命名的类(但不包括匿名内部类)、接口、构造函数、方法和字段。您可以使用javadoc工具为一组源文件生成API文档或实现文档。

您可以在整个包、单个源文件或两者上运行javadoc工具。在文档化整个包时,您可以使用-subpackages选项递归遍历目录及其子目录,或传入一个显式的包名称列表。在文档化单个源文件时,传入一个Java源文件名称列表。

一致性

标准文档生成器不验证文档注释的内容是否符合规范,也不尝试纠正文档注释中的任何错误。建议运行javadoc的任何人都要意识到在生成不符合规范的输出或包含可执行内容(如JavaScript)的输出时可能出现的问题。标准文档生成器提供了DocLint功能,帮助开发人员检测文档注释中的常见问题;但也建议使用任何适当的一致性和其他检查工具检查生成的输出。

有关HTML5文档的一致性要求的更多详细信息,请参阅HTML5规范中的一致性要求。有关与网页相关的安全问题的更多详细信息,请参阅开放式Web应用程序安全项目(OWASP)页面。

选项

javadoc支持主javadoc工具和当前选择的文档生成器的命令行选项。如果未指定其他文档生成器,则使用标准文档生成器。

GNU风格选项(即以--开头的选项)可以使用等号(=)而不是空格字符来分隔选项的名称和值。

标准javadoc选项

以下核心javadoc选项等效于相应的javac选项。有关使用这些选项的详细说明,请参阅javac中的标准选项

以下选项是核心javadoc选项,它们与相应的javac选项不等效:

-breakiterator

使用BreakIterator计算第一个句子。将第一个句子复制到包、类或成员摘要以及字母索引中。除英语外,BreakIterator类用于确定句子的结束。

  • 英语默认句子分隔算法 --- 在句号后跟一个空格或HTML块标记(如<P>)时停止。

  • Breakiterator句子分隔算法 --- 在句号、问号或感叹号后跟一个以大写字母开头的单词时停止。这旨在处理大多数缩写(如"The serial no. is valid",但不会处理"Mr. Smith")。-breakiterator选项不会在HTML标记或以数字或符号开头的句子处停止。该算法在../filename中的最后一个句号处停止,即使嵌入在HTML标记中也是如此。

-doclet class
使用替代doclet生成输出。使用完全限定名称。此doclet定义内容并格式化输出。如果未使用-doclet选项,则javadoc工具将使用标准doclet生成默认的HTML格式。此类必须包含start(Root)方法。此起始类的路径由-docletpath选项定义。
-docletpath path
指定doclet类文件(使用-doclet选项指定)及其依赖的任何JAR文件的位置。如果起始类文件位于JAR文件中,则此选项指定该JAR文件的路径。您可以指定绝对路径或相对于当前目录的路径。如果classpathlist包含多个路径或JAR文件,则它们应在Linux上用冒号(:)分隔,在Windows上用分号(;)分隔。当doclet起始类已在搜索路径中时,不需要此选项。
-exclude pkglist

无条件地从由-subpackages组成的列表中排除指定的包及其子包。即使这些包在某个较早或较晚的-subpackages选项中本应包含,也会排除这些包。

以下示例将包括java.iojava.utiljava.math(等等),但会排除以java.netjava.lang为根的包。请注意,这些示例排除了java.lang.ref,这是java.lang的子包。

  • Linux和macOS:

    javadoc -sourcepath /home/user/src -subpackages java -exclude java.net:java.lang
  • Windows:

    javadoc -sourcepath \user\src -subpackages java -exclude java.net:java.lang
--expand-requires value

指示javadoc工具扩展要记录的模块集。默认情况下,仅记录在命令行上明确给出的模块。支持以下值:

  • transitive:另外包括这些模块的所有必需传递依赖项。

  • all:包括所有依赖项。

--help-help-h-?
打印标准选项的概要。
--help-extra-X
打印一组额外选项的概要。
-Jflag

flag直接传递给运行javadoc工具的Java运行时环境(JRE)。例如,如果您必须确保系统保留32 MB的内存来处理生成的文档,则可以如下调用-Xmx选项:javadoc -J-Xmx32m -J-Xms32m com.mypackage。请注意,-Xms是可选的,因为它仅设置初始内存的大小,当您知道所需的最小内存量时很有用。

Jflag之间没有空格。

使用-version选项报告用于运行javadoc工具的JRE版本。

javadoc -J-version
java version "17" 2021-09-14 LTS
Java(TM) SE Runtime Environment (build 17+35-LTS-2724)
Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing)
-locale name

指定生成文档时javadoc工具使用的区域设置。参数是区域设置的名称,如en_US(英语,美国)或en_US_WIN(Windows变体)等,如java.util.Locale文档中所述。

指定区域设置会导致javadoc工具选择该区域设置的资源文件,用于导航栏中的字符串、列表和表的标题、帮助文件内容、stylesheet.css文件中的注释等。它还指定了按字母顺序排序的列表的排序顺序,以及句子分隔符以确定第一个句子的结束。-locale选项不确定文档注释文本的区域设置,该文本在所记录类的源文件中指定。

-package
仅显示包、受保护和公共类和成员。
-private
显示所有类和成员。
-protected
仅显示受保护和公共类和成员。这是默认设置。
-public
仅显示公共类和成员。
-quiet
关闭消息,只显示警告和错误,以便更容易查看。还会抑制version字符串的显示。
--show-members value

指定要记录的成员(字段或方法),其中value可以是以下任何值:

  • public --- 仅显示公共成员
  • protected --- 显示公共和受保护成员;这是默认设置
  • package --- 显示公共、受保护和包成员
  • private --- 显示所有成员
--show-module-contents value
指定模块声明的文档粒度,其中value可以是apiall
--show-packages value
指定要记录的模块包,其中value可以是exportedall包。
--show-types value

指定要记录的类型(类、接口等),其中value可以是以下任何值:

  • public --- 仅显示公共类型
  • protected --- 显示公共和受保护类型;这是默认设置
  • package --- 显示公共、受保护和包类型
  • private --- 显示所有类型
-subpackages subpkglist

从指定包中的源文件生成文档,并递归地生成其子包的文档。当向源代码添加新的子包时,此选项很有用,因为它们会自动包含。每个包参数都是任何顶级子包(如java)或不需要包含源文件的完全限定包(如javax.swing)。在所有操作系统上,参数用冒号分隔。不允许使用通配符。使用-sourcepath指定要查找包的位置。此选项不处理位于源树中但不属于包的源文件。

例如,以下命令为名为javajavax.swing的包及其所有子包生成文档。

  • Linux和macOS:

    javadoc -d docs -sourcepath /home/user/src -subpackages java:javax.swing
  • Windows:

    javadoc -d docs -sourcepath \user\src -subpackages java:javax.swing
-verbose
在运行javadoc工具时提供更详细的消息。没有-verbose选项时,会显示加载源文件、生成文档(每个源文件一个消息)和排序的消息。-verbose选项会导致打印额外的消息,指定解析每个Java源文件所需的毫秒数。
--version
打印版本信息。
-Werror
如果出现任何警告,则报告错误。

额外的javadoc选项

注意:javadoc的附加选项可能会随时更改而无需通知。

以下额外的javadoc选项等同于相应的javac选项。有关使用这些选项的详细说明,请参阅javac中的额外选项

标准doclet的标准选项

标准doclet提供以下选项。

--add-script 文件

文件作为生成文档的额外JavaScript文件添加。此选项可使用一次或多次以指定额外的脚本文件。

命令行示例:

javadoc --add-script first_script.js --add-script second_script.js pkg_foo

--add-stylesheet 文件

文件作为生成文档的额外样式表文件添加。此选项可使用一次或多次以指定包含在文档中的额外样式表。

命令行示例:

javadoc --add-stylesheet new_stylesheet_1.css --add-stylesheet new_stylesheet_2.css pkg_foo
--allow-script-in-comments
允许在选项和注释中使用JavaScript。
-author
在生成的文档中包含@author文本。
-bottom html代码
指定要放置在每个输出文件底部的文本。该文本位于页面底部,位于下方导航栏下方。文本可以包含HTML标记和空格,但在这种情况下,文本必须用引号括起来。对于文本内部的任何引号,使用转义字符。
-charset 名称

为此文档指定HTML字符集。名称应为IANA注册表,字符集中指定的首选MIME名称。

例如:

javadoc -charset "iso-8859-1" mypackage

此命令会在每个生成页面的头部插入以下行:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

meta标签在HTML标准(4197265和4137321),HTML文档表示中有描述。

-d 目录

指定javadoc工具保存生成的HTML文件的目标目录。如果省略-d选项,则文件将保存在当前目录中。目录值可以是绝对路径或相对于当前工作目录的路径。当javadoc工具运行时,目标目录会自动创建。

  • Linux和macOS:例如,以下命令生成包com.mypackage的文档,并将结果保存在/user/doc/目录中:

    javadoc -d /user/doc/ com.mypackage
  • Windows:例如,以下命令生成包com.mypackage的文档,并将结果保存在\user\doc\目录中:

    javadoc -d \user\doc\ com.mypackage
-docencoding 名称

指定生成的HTML文件的编码。名称应为IANA注册表,字符集中指定的首选MIME名称。

javadoc编码命令中可用三个选项。 -encoding选项用于对javadoc工具读取的文件进行编码,而-docencoding-charset选项用于对工具写入的文件进行编码。在单个编码命令中,最多只能使用输入和输出编码选项。如果在命令中同时指定输入和输出编码选项,则它们必须是相同的值。如果未指定输出选项,则默认为输入编码。

例如:

javadoc -docencoding "iso-8859-1" mypackage
-docfilessubdirs
递归复制doc文件子目录。启用对doc文件目录的深度复制。子目录及其所有内容都会递归复制到目标位置。例如,目录doc-files/example/images及其所有内容都会被复制。可以使用-excludedocfilessubdir选项来排除特定子目录。
-doctitle html代码
指定要放置在概述摘要文件顶部附近的标题。在title标记中指定的文本将作为居中的一级标题直接放置在顶部导航栏下方。 title标记可以包含HTML标记和空格,但在这种情况下,必须用引号括起标题。 title标记内的额外引号必须进行转义。例如,javadoc -doctitle "<b>My Library</b><br>v1.0" com.mypackage
-excludedocfilessubdir 名称1,名称2...
在递归复制doc文件子目录时排除具有给定名称的任何子目录。参见-docfilessubdirs。出于历史原因,可以在参数中的任何位置使用:作为分隔符,而不是,
-footer html代码
指定要放置在每个输出文件底部的页脚文本。 html代码值放置在下方导航栏的右侧。 html代码值可以包含HTML标记和空格,但在这种情况下,html代码值必须用引号括起来。 对于页脚内部的任何引号,请使用转义字符。
-group 名称 p1,p2...
在概述页面中将指定的包组合在一起。出于历史原因,可以在参数中的任何位置使用:作为分隔符,而不是,
-header html代码
指定要放置在每个输出文件顶部的页眉文本。页眉放置在上方导航栏的右侧。 页眉可以包含HTML标记和空格,但在这种情况下,必须用引号括起页眉。 对于页眉内部的引号,请使用转义字符。 例如,javadoc -header "<b>My Library</b><br>v1.0" com.mypackage
-helpfile 文件名

包含链接到顶部和底部导航栏中的帮助链接的文件。如果没有此选项,javadoc工具将创建一个硬编码在javadoc工具中的帮助文件help-doc.html。此选项允许您覆盖默认设置。 文件名可以是任何名称,不限于help-doc.htmljavadoc工具会相应地调整导航栏中的链接。 例如:

  • Linux和macOS:

    javadoc -helpfile /home/user/myhelp.html java.awt
  • Windows:

    javadoc -helpfile C:\user\myhelp.html java.awt
-html5
此选项不执行任何操作,仅保留以保持向后兼容性。
--javafx-javafx
启用JavaFX功能。如果在模块路径上检测到JavaFX库类,则此选项默认启用。
-keywords

为每个类的生成文件添加HTML关键字<meta>标记。这些标记可以帮助搜索引擎查找包含<meta>标记的页面。大多数搜索整个互联网的搜索引擎不查看<meta>标记,因为页面可能会滥用它们。将<meta>标记包括类的完全限定名称以及字段和方法的未限定名称。构造函数不包括在内,因为它们与类名相同。例如,类String以这些关键字开头:

<meta name="keywords" content="java.lang.String class">
<meta name="keywords" content="CASE_INSENSITIVE_ORDER">
<meta name="keywords" content="length()">
<meta name="keywords" content="charAt()">
-link 网址

创建到外部引用类的现有javadoc生成文档的链接。 url 参数是包含外部javadoc生成文档的目录的绝对或相对URL。 您可以在指定的javadoc工具运行中指定多个-link选项以链接到多个文档。

url目录中必须有一个package-listelement-list文件(否则,请使用-linkoffline选项)。

注意: package-listelement-list文件是由javadoc工具在生成API文档时生成的,用户不应修改这些文件。

当您使用javadoc工具来记录包时,它使用package-list文件来确定API中声明的包。 当为模块生成API文档时,javadoc工具使用element-list文件来确定API中声明的模块和包。

javadoc工具从适当的列表文件中读取名称,然后链接到该URL上的包或模块。

javadoc工具运行时,url值会被复制到创建的<A HREF>链接中。 因此,url必须是目录的URL,而不是文件的URL。

您可以使用绝对链接的url来使您的文档链接到任何网站上的文档,或者您可以使用相对链接仅链接到相对位置。 如果使用相对链接,则传递的值应该是从目标目录(使用-d选项指定)到包含要链接到的包的目录的相对路径。 当您指定绝对链接时,通常使用HTTP链接。 但是,如果要链接到没有Web服务器的文件系统,则可以使用文件链接。 仅当希望访问生成的文档的所有人共享相同的文件系统时才使用文件链接。 在所有情况下,无论URL是绝对还是相对,以及在所有操作系统上,使用斜杠作为分隔符,并使用https:http:file:URL备忘录:统一资源定位符中指定的。

-link https://<host>/<directory>/<directory>/.../<name>
-link http://<host>/<directory>/<directory>/.../<name>
-link file://<host>/<directory>/<directory>/.../<name>
-link <directory>/<directory>/.../<name>
--link-modularity-mismatchwarn | info
指定是否应将具有错误模块化(例如,模块化库的非模块化文档,或反之亦然)的外部文档报告为警告(warn)或仅作为消息(info)。 默认行为是报告警告。
-linkoffline url1 url2

此选项是-link选项的变体。 它们都创建到外部引用类的javadoc生成文档的链接。 您可以在指定的javadoc工具运行中指定多个-linkoffline选项。

在以下情况下使用-linkoffline选项:

  • 链接到javadoc工具无法通过Web连接访问的网页文档

  • 外部文档的package-listelement-list文件在URL位置不可访问或不存在,但在不同位置存在,并且可以由package-listelement-list文件(通常是本地文件)指定。

注意: package-listelement-list文件是由javadoc工具在生成API文档时生成的,用户不应修改这些文件。

如果url1仅在万维网上可访问,则-linkoffline选项消除了javadoc工具必须具有Web连接才能生成文档的约束。

-linkoffline选项的另一个用途是用作更新文档的解决方法。 在对一整套包或模块运行javadoc工具之后,您可以再次对一小组更改的包或模块运行javadoc工具,以便将更新的文件插入到原始集合中。

例如,-linkoffline选项需要两个参数。 第一个用于嵌入到<a href>链接中的字符串,第二个告诉javadoc工具在哪里找到package-listelement-list文件。

url1url2值是包含您要链接到的外部javadoc生成文档的目录的绝对或相对URL。 在相对情况下,该值应该是从目标目录(使用-d选项指定)到要链接到的包的根目录的相对路径。 请参阅-link选项中的url

--link-platform-properties url

指定用于配置到平台文档的链接的属性文件。

url参数应指向包含以下格式条目的属性文件,其中<version>是传递给--release--source选项的平台版本,<url>是相应平台API文档的基本URL:

doclet.platform.docs.<version>=<url>

例如,包含15到17版本的URL的属性文件可能包含以下行:

doclet.platform.docs.15=https://example.com/api/15/
doclet.platform.docs.16=https://example.com/api/16/
doclet.platform.docs.17=https://example.com/api/17/

如果属性文件不包含特定版本的条目,则不会生成平台链接。

-linksource

创建每个源文件的HTML版本(带有行号),并从标准HTML文档中添加链接。 为源文件中声明的类、接口、构造函数、方法和字段创建链接。 否则,不会创建链接,例如默认构造函数和生成的类。

此选项公开了包括私有类、私有字段和私有方法的主体在内的所有私有实现细节,而不管-public-package-protected-private选项如何。 除非还使用-private选项,否则并非所有私有类或接口都可以通过链接访问。

每个链接出现在其声明中的标识符名称上。 例如,Button类的源代码链接将出现在Button一词上:

public class Button extends Component implements Accessible

Button类中的getLabel方法的源代码链接出现在getLabel一词上:

public String getLabel()
--main-stylesheet file-stylesheetfile file

指定包含生成文档中使用的CSS样式定义的替代样式表文件的路径。 此选项允许您覆盖默认样式。 如果不指定该选项,javadoc工具将创建并使用默认样式表。 文件名可以是任何名称,不限于stylesheet.css--main-stylesheet选项是首选形式。

命令行示例:

javadoc --main-stylesheet main_stylesheet.css pkg_foo
-nocomment
抑制整个注释主体,包括主要描述和所有标签,并仅生成声明。 此选项允许您重用最初用于不同目的的源文件,以便在新项目的早期阶段生成骨架HTML文档。
-nodeprecated
防止在文档中生成任何已弃用的API。 这与-nodeprecatedlist选项的作用相同,并且不会在文档的其余部分生成任何已弃用的API。 当编写代码时,您不希望被弃用的代码分散注意力时,这很有用。
-nodeprecatedlist
防止生成包含已弃用API列表(deprecated-list.html)的文件以及导航栏中指向该页面的链接。 javadoc工具继续在文档的其余部分生成已弃用的API。 当您的源代码不包含已弃用的API时,且希望使导航栏更清晰时,这很有用。
-nohelp
在每个输出页面的顶部导航栏中省略HELP链接。
-noindex
在生成的文档中省略索引。 默认情况下会生成索引。
-nonavbar
防止生成通常位于生成页面顶部和底部的导航栏、页眉和页脚。 -nonavbar选项对-bottom选项没有影响。 当您只对内容感兴趣且不需要导航时(例如仅将文件转换为仅用于打印的PostScript或PDF时),此选项很有用。
--no-platform-links
防止生成到平台文档的链接。 这些链接默认情况下会生成。
-noqualifier name1,name2...

从输出中排除限定符列表。 在类或接口名称出现的地方删除包名称。 由于历史原因,:可以在参数中的任何位置用作分隔符,而不是,

以下示例省略所有包限定符:-noqualifier all

以下示例省略java.langjava.io包限定符:-noqualifier java.lang:java.io

以下示例省略以javacom.sun子包开头的包限定符,但不包括javax: -noqualifier java.*:com.sun.*

在先前行为会导致包限定符出现的地方,可以适当缩短名称。 无论是否使用-noqualifier选项,此规则都有效。

-nosince
生成的文档中省略与@since标签相关的Since部分。
-notimestamp
阻止在生成的HTML页面顶部附近以HTML注释形式隐藏的时间戳。当您希望在两个源代码基础上运行javadoc工具并获取它们之间的差异时,-notimestamp选项很有用,因为它可以防止时间戳导致每个页面都产生差异。时间戳包括javadoc工具的发布版本号。
-notree
生成的文档中省略类和接口层次结构页面。这些页面是通过导航栏中的“Tree”按钮到达的页面。层次结构默认会生成。
--override-methods (detail|summary)
在详细或摘要部分中记录重写的方法。默认为detail
-overview filename

指定javadoc工具应从由filename指定的源文件中检索概述文档的文本,并将其放置在概述页面(overview-summary.html)上。使用文件名指定的相对路径是相对于当前工作目录的。

虽然您可以为filename值使用任何名称,并将其放置在任何您想要的路径中,但通常将其命名为overview.html,并将其放置在包含最顶层包目录的目录中。在此位置,当文档化包时不需要路径,因为-sourcepath选项指向此文件。

  • Linux和macOS:例如,如果java.lang包的源树是src/classes/java/lang/,那么您可以将概述文件放在src/classes/overview.html。

  • Windows:例如,如果java.lang包的源树是src\classes\java\lang\,那么您可以将概述文件放在src\classes\overview.html

仅当向javadoc工具传递两个或两个以上的包名称时,才会创建概述页面。概述页面的标题由-doctitle设置。

-serialwarn
为缺少@serial标签生成编译时警告。默认情况下,Javadoc不生成序列化警告。使用此选项显示序列化警告,有助于正确记录默认可序列化字段和writeExternal方法。
--since release(,release)*

为在指定的release中添加或新添加的API生成文档。

如果文档源代码中元素的javadoc注释中的@since标签与作为选项参数传递的release匹配,则包含有关该元素及其添加的版本的信息在“新API”页面中。如果生成了“已弃用API”页面,并且文档元素的java.lang.Deprecated注解的since元素与选项参数中的release匹配,则将有关元素被弃用的版本的信息添加到“已弃用API”页面中。

使用区分大小写的字符串比较来比较版本。

--since-label text
指定在“新API”页面标题中使用的text。这可能包含有关页面中涵盖的版本的信息,例如“在2.0版本中的新API”或“自1版以来的新API”。
--snippet-path snippetpathlist
指定用于查找外部片段文件的搜索路径。 snippetpathlist可以通过使用平台路径分隔符(Windows上为;;其他平台为:)来包含多个路径。标准文档生成器首先搜索包含片段的snippet-files子目录,然后搜索给定列表中的所有目录。
-sourcetab tab-length
指定源代码中每个制表符使用的空格数。
--spec-base-url url
指定@spec标签中相对URL的基本URL,用于在生成链接到任何外部规范时使用。它可以是绝对URL,也可以是相对URL,此时将相对于生成的输出文件的基本目录进行评估。默认值等效于{@docRoot}/../specs
-splitindex
将索引文件拆分为多个文件,按字母顺序,每个字母一个文件,另外还有一个文件用于以非字母符号开头的索引条目。
-tag name:locations:header

指定单参数自定义标签。为了使javadoc工具拼写检查标签名称,重要的是为源代码中存在的每个自定义标签包含一个-tag选项,禁用(使用X)那些在当前运行中未输出的标签。冒号(:)始终是分隔符。要在标签名称中包含冒号,请使用反斜杠(\)进行转义。 -tag选项将标签标题header以粗体形式输出,然后在下一行跟随其单参数的文本。类似于任何块标签,参数文本可以包含内联标签,这些标签也会被解释。输出类似于标准的单参数标签,例如@return@author标签。省略header值会导致name成为标题。 locations是指定标签可以使用的声明种类的字符列表。以下字符可以使用,不区分大小写:

  • A:所有声明
  • C:构造函数
  • F:字段
  • M:方法
  • O:概述页面和doc-files子目录中的其他文档文件
  • P:包
  • S:模块
  • T:类型(类和接口)
  • X:无处:标签已禁用,将被忽略

命令行中给出标签的顺序将用作生成输出中标签出现的顺序。您可以通过使用没有locationsheader-tag选项按照命令行中给定的顺序包含标准标签。

-taglet class

指定用于生成标签文档的标签类的完全限定名称。对于class值,请使用完全限定名称。此标签还定义了自定义标签具有的文本参数数量。标签接受这些参数,处理它们,并生成输出。

标签对于块标签或内联标签很有用。它们可以具有任意数量的参数,并实现自定义行为,例如使文本加粗,格式化项目符号,将文本写入文件,或启动其他进程。标签只能确定标签应出现的位置和形式。所有其他决策由文档生成器做出。标签不能执行诸如从包含的类列表中删除类名之类的操作。但是,它可以执行副作用,例如将标签的文本打印到文件中或触发另一个进程。使用-tagletpath选项指定标签的路径。以下示例在生成的页面中在Parameters之后和Throws之前插入To Do标签。

-taglet com.sun.tools.doclets.ToDoTaglet
-tagletpath /home/taglets
-tag return
-tag param
-tag todo
-tag throws
-tag see

或者,您可以使用-taglet选项代替其-tag选项,但这可能难以阅读。

-tagletpath tagletpathlist
指定用于查找标签类文件的搜索路径。 tagletpathlist可以通过使用平台路径分隔符(Windows上为;;其他平台为:)来包含多个路径。javadoc工具搜索指定路径的所有子目录。
-top html-code
指定要放置在每个输出文件顶部的文本。
-use
创建类和包使用页面。为每个文档化的类和包包括一个使用页面。该页面描述了使用指定类或包的任何API的包、类、方法、构造函数和字段。给定类C,使用类C的内容包括C的子类、声明为C的字段、返回C的方法以及参数类型为C的方法和构造函数。例如,您可以查看String类型的使用页面。因为java.awt.Font类中的getName方法返回类型String,所以getName方法使用String,因此getName方法会出现在String的使用页面上。这仅记录API的使用情况,而不是实现。当方法在其实现中使用String,但不接受字符串作为参数或返回字符串时,这不被视为使用String。要访问生成的使用页面,请转到类或包,并单击导航栏中的Use链接
-version
在生成的文档中包含版本文本。默认情况下省略此文本。要查看您正在使用的javadoc工具版本,请使用-J-version选项。
-windowtitle title
指定要放置在HTML <title>标记中的标题。在窗口标题和任何浏览器书签(收藏夹)中,title标记中指定的文本将显示。此标题不应包含任何HTML标记,因为浏览器将无法正确解释它们。在-windowtitle选项被省略时,javadoc工具将使用-doctitle选项的值作为-windowtitle选项的值。例如,javadoc -windowtitle "My Library" com.mypackage

标准文档生成器的额外选项

以下是标准文档生成器提供的附加选项,可能会在不事先通知的情况下更改。附加选项很少被使用,或者被视为高级选项。

--date 日期和时间

指定用于给生成的页面加时间戳的值,采用 ISO 8601 格式。指定的值必须在当前日期和时间的10年内。不能同时指定 -notimestamp--date。使用特定值意味着生成的文档可以成为可重现构建的一部分。如果未提供该选项,则默认值为当前日期和时间。例如:

javadoc --date 2022-02-01T17:41:59-08:00 mypackage
--legal-notices (default|none|目录)
指定要将法律文件从哪个位置复制到生成的文档中。如果未指定该选项或者使用值 default,则从默认位置复制文件。如果使用值 none,则不复制文件。其他每个参数都被解释为要从中复制法律文件的目录。
--no-frames
此选项无效,仅为向后兼容而保留。
-Xdoclint

启用对文档注释中问题的推荐检查。

默认情况下,启用 -Xdoclint 选项。使用选项 -Xdoclint:none 可以禁用它。

有关更多详细信息,请参见 DocLint

-Xdoclint:标志,标志,...

启用或禁用文档注释中不同类型问题的特定检查。

每个 标志 可以是 allnone[-],其中 具有以下值之一:accessibilityhtmlmissingreferencesyntax。有关这些值的更多详细信息,请参见 DocLint 组

在指定两个或更多标志时,可以使用单个 -Xdoclint:... 选项,列出所有所需的标志,也可以使用多个选项,在每个选项中给出一个或多个标志。例如,使用以下任一命令检查文件 MyFile.java 中的 HTML、语法和可访问性问题。

javadoc -Xdoclint:html -Xdoclint:syntax -Xdoclint:accessibility MyFile.java
javadoc -Xdoclint:html,syntax,accessibility MyFile.java

以下示例说明如何更改 DocLint 报告的内容:

  • -Xdoclint:none --- 禁用所有检查
  • -Xdoclint: --- 启用 检查
  • -Xdoclint:all --- 启用所有组的检查
  • -Xdoclint:all,- --- 启用所有检查,除了 检查

有关更多详细信息,请参见 DocLint

-Xdoclint/package:[-]

启用或禁用特定包中的检查。 是逗号分隔的包说明符列表。包说明符可以是包的限定名称,也可以是包名称前缀后跟 *,该符号会扩展为给定包的所有子包。在要禁用指定包的检查时,在包说明符前加上 -

有关更多详细信息,请参见 DocLint

-Xdocrootparent 网址
网址 替换文档注释中跟随 /.. 的所有 @docRoot 项。

DocLint

DocLint 提供了检查文档注释可能存在问题的能力。问题可能会根据其严重程度报告为警告或错误。例如,缺少注释可能是不良风格,值得警告,但指向未知 Java 声明的链接更为严重,值得报告为错误。问题被组织成 ,可以使用选项来启用或禁用一个或多个组中的消息。在源代码中,可以通过使用 @SuppressWarnings 注释来 抑制 一个或多个组中的消息。

当从 javadoc 调用时,默认情况下,DocLint 检查所有用于生成文档的注释。因此,它依赖于其他命令行选项来确定将包含哪些声明以及哪些相应的文档注释。 注意: 这可能意味着即使在可序列化类的某些私有成员上也会检查注释,如果这些成员需要在生成的 Serialized Forms 页面中记录。

javac 调用 DocLint 时,DocLint 仅依赖于各种 -Xdoclint... 选项来确定要检查哪些文档注释。

DocLint 不尝试修复无效输入,只是报告它。

注意: DocLint 不保证这些检查的完整性。特别是,它不是完整的 HTML 合规性检查器。目标只是以方便的方式报告常见错误。

@SuppressWarnings 注释来抑制。

这些组如下:

  • accessibility --- 检查与可访问性相关的问题。
    例如,在 <img> 元素中未指定 alt 属性,或在 <table> 元素中未指定标题或摘要属性。

    如果预期下游验证工具可能会在由 javadoc 生成的文件中报告错误,则将问题报告为错误。

    有关参考,请参见 Web 内容可访问性指南

  • html --- 检测常见的高级 HTML 问题。
    例如,在内联元素中放置块元素,或者未关闭需要结束标记的元素。

    如果预期下游验证工具可能会在由 javadoc 生成的文件中报告错误,则将问题报告为错误。

    有关参考,请参见 HTML Living Standard

  • missing --- 检查缺少的文档注释或标记。
    例如,在类声明中缺少注释,或在方法声明的注释中缺少 @param@return 标记。

    与缺少项目相关的问题通常报告为警告,因为下游验证工具不太可能报告由 javadoc 生成的输出中的错误。

  • reference --- 检查与文档注释标记中 Java API 元素的引用相关的问题。
    例如,在 @see{@link ...} 中找不到引用,或者为 @param@throws 给出了错误的名称。

    通常将问题报告为错误,因为虽然问题可能不会导致生成的文件中的问题,但作者很可能犯了一个错误,导致不正确或意外的文档。

  • syntax --- 检查文档注释中的低级语法问题。
    例如,未转义的尖括号(<>)和和号(&)以及无效的文档注释标记。

    通常将问题报告为错误,因为问题可能导致不正确或意外的文档。

抑制消息

DocLint 检查并识别可能存在于 @SuppressWarnings 注释参数中的两个字符串。

  • doclint
  • doclint:列表
列表 是一个逗号分隔的一个或多个 accessibilityhtmlmissingsyntaxreference 中的名称。

列表 中的名称与 javacjavadoc 的命令行 -Xdoclint 选项支持的组名称相同。 (这是 javac -Xlint 选项和 @SuppressWarnings 支持的相应名称所遵循的相同约定。)

列表 中的名称也可以分别在注释的参数中指定。例如,以下两者是等效的:

  • @SuppressWarnings("doclint:accessibility,missing")
  • @SuppressWarnings("doclint:accessibility", "doclint:missing")
@SuppressWarnings。如果找到包含简单字符串 doclint 或包含 doclint:LIST 的任何此类注释,则将忽略该问题,其中 LIST 包含问题组的名称。

注意: 与其他使用 @SuppressWarnings 的情况一样,在模块或包声明上使用注释仅影响该声明;它不会影响其他源文件中模块或包的内容。

@SuppressWarnings 注释抑制:这包括错误和警告。

注意: 只能抑制消息。如果在顶层声明上给出 @SuppressWarnings("doclint") 注释,则将抑制该声明及任何封闭声明中的所有 DocLint 消息;无法选择性地重新启用封闭声明中的问题消息。

与下游验证工具的比较

javac 和 javadoc 中的实用程序,用于检查源文件中的文档注释内容。相比之下,下游验证工具可用于验证由 javadoc 和标准文档生成器生成的输出中的文档注释。

  • 下游验证工具可以检查任何生成文档的最终结果,因为这将被最终用户看到。这包括来自所有来源的内容,包括文档注释、标准 Doclet 本身、用户提供的标签以及通过命令行选项提供的内容。由于这些工具正在分析完整的 HTML 页面,它们可以进行比 DocLint 更完整的检查。然而,当在生成的页面中发现问题时,可能更难追踪到问题需要在构建流水线的哪个位置修复。

  • DocLint 检查源文件中的文档注释内容。这使得很容易确定可能存在的任何问题的确切位置。DocLint 还可以检测到一些语义错误,而下游工具无法检测到,例如缺少注释、在返回 void 的方法中使用 @return 标签,或者描述不存在参数的 @param 标签。但由于其性质,DocLint 无法报告诸如缺少链接、用户提供的自定义标签中的错误,或者标准 Doclet 本身的问题。它也无法可靠地检测文档注释中内容与自定义标签生成的内容之间边界处的错误。