SpringBoot构建报An illegal reflective access operation错误如何解决
SpringBoot构建出现An illegal reflective access operation has occurred警告解决方案
问题根因
你添加javax.xml.bind依赖无效的核心原因是该方案不匹配当前问题场景:这类添加JAXB依赖的方案针对的是JDK9+移除内置JAXB模块导致的项目运行时报错问题。
你遇到的警告来源于本地Maven工具自带的guice.jar包,是运行Maven命令使用的JDK版本(9及以上)与当前Maven版本不兼容导致的,和你的SpringBoot项目代码没有直接关联。
可行解决办法
- 方案1:统一Maven运行的JDK版本为JDK8
你的pom.xml中已经指定项目Java版本为1.8,只需将本地环境变量的JAVA_HOME指向JDK8的安装路径即可。执行mvn -v可查看Maven当前使用的JDK版本,修改配置后重新执行构建命令即可消除警告。 - 方案2:升级本地Maven版本
将本地Maven升级到3.6.3及以上的正式版本,新版本Maven已经适配高版本JDK,修复了guice包的反射兼容问题,升级后重新构建即可消除警告。 - 方案3:添加JVM参数屏蔽警告
如果你不想修改现有JDK和Maven版本,可在执行Maven构建命令前添加启动参数开放访问权限:
Linux/macOS系统执行:
Windows系统cmd执行:export MAVEN_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"
再执行构建命令即可屏蔽该警告。set MAVEN_OPTS=--add-opens java.base/java.lang=ALL-UNNAMED
额外优化建议
你的pom.xml中重复声明了两次javax.xml.bind:jaxb-api依赖,可删除重复的声明,避免不必要的依赖冗余。
内容的提问来源于stack exchange,提问作者user630702
相关产品推荐
相关产品推荐

