IntelliJ IDEA导入Maven3.8.5构建的SpringBoot2.7项目报错问询
导入SpringBoot 2.7项目触发Maven组件查找报错问题
问题现象
通过start.spring.io生成的SpringBoot 2.7版本项目默认采用Maven 3.8.5构建,将此类项目导入IntelliJ IDEA时会触发报错,该报错调试难度较高,提示信息指向性不明确,具体报错内容如下:
java.lang.RuntimeException: org.codehaus.plexus.component.repository.exception.ComponentLookupException: com.google.inject.ProvisionException: Unable to provision, see the following errors: 1) Error injecting constructor, java.lang.NoSuchMethodError: org.apache.maven.model.validation.DefaultModelValidator: method 'void <init>()' not found at org.jetbrains.idea.maven.server.embedder.CustomModelValidator.<init>(Unknown Source) while locating org.jetbrains.idea.maven.server.embedder.CustomModelValidator at ClassRealm[maven.ext, parent: ClassRealm[plexus.core, parent: null]] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule) while locating org.apache.maven.model.validation.ModelValidator annotated with @com.google.inject.name.Named(value="ide") 1 error role: org.apache.maven.model.validation.ModelValidator roleHint: ide
报错原因
该报错本质是IntelliJ IDEA内置Maven集成插件与项目使用的Maven 3.8.5版本不兼容:
IDEA的Maven插件自定义了CustomModelValidator类,继承Maven核心的DefaultModelValidator,旧版本IDEA的实现逻辑中调用了DefaultModelValidator的无参构造方法;但Maven 3.8.5版本修改了DefaultModelValidator的类结构,移除了无参构造方法,运行时找不到对应方法就抛出了NoSuchMethodError,最终触发组件查找失败的报错。
解决方案
按操作优先级排序,可任选一种方案修复:
- 升级IntelliJ IDEA到2022.2及以上正式版本:新版本IDEA已经完成对Maven 3.8.5版本的适配,直接导入项目即可正常识别构建,无需额外修改配置
- 不升级IDEA的前提下,更换项目使用的Maven版本:本地安装Maven 3.8.1及更早的3.8系列版本,打开IDEA设置路径
Build, Execution, Deployment > Build Tools > Maven,将Maven home path选项从「Bundled (Maven 3)」修改为本地安装的兼容版本Maven的根目录,保存后重新刷新Maven项目即可 - 若临时不想更换Maven版本,可在IDEA的Maven设置中勾选Use Maven 2 to import project,但该方案兼容性较差,可能触发其他构建问题,不推荐优先使用
内容的提问来源于stack exchange,提问作者Austine Gwa
相关产品推荐
相关产品推荐

