You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK17执行mvn clean install因Java Doclet报错求助

问题原因分析

这个错误的核心原因是:

  1. JDK模块化变更:com.sun.tools.doclets.standard.Standard在Java 9及以上版本中被迁移到jdk.javadoc模块,且不再以公开的com.sun.tools.doclets.standard包形式提供。Java 17下直接尝试加载这个类会触发ClassNotFoundException。
  2. 插件/依赖兼容性问题:你当前使用的maven-javadoc-plugin:3.4.0和spring-auto-restdocs-json-doclet-jdk9:2.0.11版本对Java 17的支持不足,即便指定了自定义Doclet,内部逻辑仍会尝试加载已被移除的标准Doclet类。
解决方案

按以下步骤逐一调整:

1. 升级maven-javadoc-plugin版本

将插件版本升级到3.6.0及以上,该版本开始全面兼容Java 17,修复了模块化环境下Doclet加载的问题:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <!-- 升级到兼容Java17的版本 -->
    <version>3.6.2</version>
    <extensions>true</extensions>
    <executions>
        <execution>
            <id>generate-javadoc-json</id>
            <phase>compile</phase>
            <goals>
                <goal>javadoc-no-fork</goal>
            </goals>
        </execution>
    </executions>
    <!-- 其余配置保留 -->
</plugin>

2. 升级Spring Auto RestDocs Doclet版本

spring-auto-restdocs-json-doclet-jdk9:2.0.11发布于2021年,对Java 17的支持有限,建议升级到2.2.0及以上版本(该版本明确支持Java 17):

<docletArtifact>
    <groupId>capital.scalable</groupId>
    <!-- 高版本已统一artifactId,不再区分jdk9后缀 -->
    <artifactId>spring-auto-restdocs-json-doclet</artifactId>
    <version>2.2.0</version>
</docletArtifact>

3. 添加Javadoc模块依赖配置(可选)

如果升级后仍有问题,在插件的configuration中添加additionalJOptions,显式引入jdk.javadoc模块:

<configuration>
    <!-- 原有配置 -->
    <additionalJOptions>
        <additionalJOption>--add-modules</additionalJOption>
        <additionalJOption>jdk.javadoc</additionalJOption>
    </additionalJOptions>
</configuration>
验证调整

执行mvn clean install前,先清理本地仓库缓存避免依赖冲突:

mvn clean install -U

内容的提问来源于stack exchange,提问作者Coding_Rabbit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:01:20