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生效。
- Windows系统:修改系统环境变量的
- 再检查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
相关产品推荐
相关产品推荐

