Spring Boot项目IntelliJ可运行,mvn启动报unnamed module错误的解决
Java 11 Spring Boot项目
mvn spring-boot:run启动报错unnamed module的解决方法 问题描述
基于Java 11开发的Spring Boot项目,在IntelliJ IDEA中通过Run命令启动运行正常,但执行mvn spring-boot:run命令启动后,运行阶段出现unnamed module错误,导致第三方依赖类无法初始化。
错误日志
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: Provider com.sun.xml.ws.spi.ProviderImpl could not be instantiated] with root cause java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module
项目环境
- 项目基于Java 11 + Spring Boot构建
- 依赖第三方提供的Jar包及其关联依赖,已将这些Jar包安装至本地Maven仓库
- pom.xml中已配置对应依赖、本地仓库地址,且引入
org.springframework.boot作为父依赖
问题原因与解决方法
问题根源
IntelliJ IDEA中配置的JDK版本与系统环境变量JAVA_HOME指向的JDK版本不一致,导致Maven执行spring-boot:run时使用了与IDE不同的JDK环境,触发模块访问权限问题。
解决步骤
修正系统环境变量JAVA_HOME,使其指向与IntelliJ IDEA中配置的JDK相同的版本,之后重新执行mvn spring-boot:run命令,项目即可正常启动运行。
内容的提问来源于stack exchange,提问作者icaptan
相关产品推荐
相关产品推荐

