Java 16 Maven环境GSON出现Invalid Flag --add-opens随机报错如何解决
问题根源
你错误地将JVM运行参数配置到了编译阶段参数中:--add-opens系列参数是Java程序启动时的JVM参数,不属于javac编译器的合法参数。你在maven-compiler-plugin的compilerArgs中添加了该参数,IDEA同步Maven配置时会概率性将该参数传递给编译流程,因此出现随机报错的问题。
可行修复方案
- 第一步:修正pom.xml配置
删除maven-compiler-plugin下的<compilerArgs>完整配置块,maven-surefire-plugin和maven-failsafe-plugin中的argLine配置可以保留,用于单元测试、集成测试阶段的JVM参数传递。
修正后的maven-compiler-plugin配置如下:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>16</source> <target>16</target> </configuration> </plugin> - 第二步:统一配置应用启动参数
在IntelliJ IDEA右上角的运行/调试配置中,找到你项目的启动配置,在VM options栏单独添加--add-opens java.base/java.time=ALL-UNNAMED即可。如果项目有多个启动入口,可以修改IDEA的「运行配置模板」,给所有Java应用启动配置默认添加该参数,避免重复配置。 - 第三步:清除IDE缓存生效
点击IDEA顶部菜单栏File → Invalidate Caches...,勾选清除文件系统缓存选项后重启IDE,重新导入Maven项目即可彻底解决随机报错问题。
可选根因解决方案
如果你不想额外维护JVM参数,可以直接将GSON依赖升级到2.9.0及以上版本,高版本GSON已经完成Java 9+模块系统适配,不需要额外添加--add-opens参数即可正常序列化/反序列化java.time包下的类,从根源上避免该问题。
内容的提问来源于stack exchange,提问作者keanJ
相关产品推荐
相关产品推荐

