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

AspectJ-Maven-Plugin 1.11适配JDK11缺失tools.jar致构建失败如何解决

解决AspectJ Maven插件在JDK11下找不到tools.jar的问题

这个问题我之前帮不少开发者解决过,核心原因是你用的aspectj-maven-plugin:1.11是基于JDK8及以下设计的,默认会去寻找tools.jar,但JDK9+已经把这个文件的内容整合到JDK的模块化系统中(比如jdk.compiler模块),所以旧插件会报错。以下是适配JDK11的最优解决方案:

1. 优先升级插件到支持JDK11的版本

最根本的解决方式是把插件升级到1.12及以上版本(推荐用1.14.0或更高稳定版),这些版本已经适配了JDK9+的模块化结构,不会再依赖tools.jar。同时要搭配支持JDK11的AspectJ核心库版本(比如1.9.x系列)。

具体POM配置示例

替换你原来的插件配置为以下内容:

<properties>
    <!-- 指定兼容JDK11的AspectJ版本 -->
    <aspectj.version>1.9.7</aspectj.version>
    <!-- 确保项目编译环境和JDK11一致 -->
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <!-- 升级到支持JDK11的插件版本 -->
            <version>1.14.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- 明确指定JDK11的兼容级别 -->
                <complianceLevel>11</complianceLevel>
                <source>11</source>
                <target>11</target>
                <!-- 如果你有自定义切面库,在这里添加 -->
                <!-- <aspectLibraries>
                    <aspectLibrary>
                        <groupId>your.group.id</groupId>
                        <artifactId>your-aspect-lib</artifactId>
                    </aspectLibrary>
                </aspectLibraries> -->
            </configuration>
            <dependencies>
                <!-- 引入匹配版本的AspectJ工具类库 -->
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjtools</artifactId>
                    <version>${aspectj.version}</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

2. 验证环境配置

  • 确保你的JAVA_HOME环境变量指向正确的JDK11目录,Maven会自动读取这个路径获取JDK资源。
  • 不要手动在POM中添加com.sun:tools:jar的依赖,这在JDK11中已经不存在,反而会引发冲突。

3. 特殊场景:无法升级插件时的临时方案(不推荐)

如果因为项目限制无法升级插件,可以通过Maven的系统依赖指定JDK11的模块路径,但这种方式比较hack,不建议长期使用:

<dependency>
    <groupId>com.sun</groupId>
    <artifactId>tools</artifactId>
    <version>11.0.7</version>
    <scope>system</scope>
    <!-- 指向JDK11的lib目录下的jrt-fs.jar,模拟tools.jar的功能 -->
    <systemPath>${java.home}/lib/jrt-fs.jar</systemPath>
</dependency>

但还是强烈建议升级插件,这才是长期维护的正确方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:38:02