如何在JDK16环境下运行JDK1.8开发项目的maven spring-boot:run命令
解决方案
你可以根据修改成本选择以下任意一种方案,均不需要新增模块配置文件:
方案1:零项目修改,命令行直接传参(最推荐)
执行spring-boot:run时直接附加JVM参数即可,无需修改任何项目文件:
mvn spring-boot:run -Dspring-boot.run.jvmArguments="--add-opens java.base/java.lang=ALL-UNNAMED"
如果后续运行出现其他模块访问报错,可在参数中追加对应开放规则,示例:
mvn spring-boot:run -Dspring-boot.run.jvmArguments="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED"
方案2:仅修改Maven插件配置,不用每次输长命令
修改项目pom.xml中spring-boot-maven-plugin的配置,固定JVM参数:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.5.1.RELEASE</version> <configuration> <jvmArguments> --add-opens java.base/java.lang=ALL-UNNAMED <!-- 按需追加其他开放规则 --> </jvmArguments> </configuration> </plugin>
配置完成后直接执行mvn spring-boot:run即可自动加载参数。
方案3:全局配置,所有Maven项目通用
配置MAVEN_OPTS环境变量,全局生效,无需修改任何项目文件:
- Linux/macOS 终端执行:
export MAVEN_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED" - Windows CMD 执行:
set MAVEN_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED" - Windows PowerShell 执行:
$env:MAVEN_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"
提示:所有
--add-opens规则可根据报错信息灵活调整,通用格式为--add-opens [模块名]/[包名]=ALL-UNNAMED。
内容的提问来源于stack exchange,提问作者Daniel Kaplan
相关产品推荐
相关产品推荐

