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

Maven打包JDK11环境出现AccessControlException弃用错误求助

解决JDK11下Maven编译提示AccessControlException弃用的问题

确认Maven实际运行的JDK版本

  • 在命令行执行mvn -version,查看输出里的Java version字段,确认是否为JDK11。如果显示17及以上版本,说明系统环境变量的JAVA_HOME指向了高版本JDK:
    • Windows系统:修改系统环境变量的JAVA_HOME为JDK11的安装路径,并确保Path中JDK11的bin目录排在最前面。
    • Linux/macOS:修改~/.bashrc或~/.zshrc中的JAVA_HOME配置,指向JDK11,执行source ~/.bashrc生效。
  • 再检查IDEA的Maven配置:进入Settings -> Build, Execution, Deployment -> Build Tools -> Maven -> Runner,确认JRE选项选中的是JDK11。

完善Maven编译器插件配置

仅指定maven.compiler.source和target可能不足以确保编译严格遵循JDK11标准,需显式配置maven-compiler-plugin并添加release参数:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version> <!-- 选用兼容JDK11的稳定版本 -->
            <configuration>
                <source>11</source>
                <target>11</target>
                <release>11</release> <!-- 强制编译与运行环境版本一致,避免版本偏差 -->
            </configuration>
        </plugin>
    </plugins>
</build>

排查依赖库问题

  • 执行mvn dependency:tree,梳理所有依赖的版本信息,检查是否存在用JDK17及以上版本编译的依赖库。如果有,降级该依赖到兼容JDK11的版本。
  • 部分依赖库可能在字节码中携带了高版本JDK的弃用注解信息,导致编译时触发提示,这种情况下需替换为适配JDK11的依赖版本。

清理Maven缓存

执行mvn clean install -U,强制更新依赖并清理本地仓库的缓存文件,避免缓存中残留高版本JDK编译的无效文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:12:55