Maven项目启动报错:module java.base does not 'opens java.lang'
解决方案
一、修正直接启动的命令参数位置
你之前的命令把JVM参数放在了jar包后面,这是错误的——JVM参数必须放在-jar之前才能被JVM识别生效。正确的启动命令如下:
java --add-opens java.base/java.lang=ALL-UNNAMED -jar target\MyProject-0.0.1-SNAPSHOT.jar
二、在pom.xml中配置永久生效的JVM参数
从报错里的dispatcherServlet来看,你的项目大概率是Spring Boot项目,可通过spring-boot-maven-plugin插件把JVM参数打包进jar,后续启动无需手动添加:
- 打开项目根目录下的
pom.xml,找到<build>节点,在<plugins>中添加或修改spring-boot-maven-plugin的配置:
<build> <plugins> <!-- 保留你原有的其他插件配置 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <jvmArguments> --add-opens java.base/java.lang=ALL-UNNAMED </jvmArguments> </configuration> </plugin> </plugins> </build>
- 重新打包项目:
mvn clean package
- 启动新打包的jar,无需额外加参数:
java -jar target\MyProject-0.0.1-SNAPSHOT.jar
如果你的项目不是Spring Boot,而是普通Maven Web项目,需要在部署的容器(比如Tomcat)的启动脚本中添加--add-opens java.base/java.lang=ALL-UNNAMED这个JVM参数,具体操作取决于你使用的容器类型。
内容的提问来源于stack exchange,提问作者redOctober13
相关产品推荐
相关产品推荐

