问题描述:
今天构建一个springboot工程,倒入到idea中,出现以下错误:
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
在网上查询发现是MAVEN版本问题,我之前使用的版本是3.8.6:
解决方案
常见方案是修改maven的版本,从3.8.6调整成3.8.1;调整如下:
调整完成后,问题确实解决了,效果如下:
MAVEN配置
既然要切换maven版本,那么这里也记录一下在mac上,修改maven版本的操作:
第一步,下载3.8.1版本的maven,由于网络比较慢,可能需要多次重试,下载地址:
https://archive.apache.org/dist/maven/maven-3/3.8.1/binaries/
https://maven.apache.org/download.cgi
第二步,解压文件到指定目录中,并且开始配置mvn,核心是settings.xml(目录地址apache-maven-3.8.1/conf),这个配置主要使用国内厂商的maven仓库,这里感谢阿里云提供了一套稳定的maven仓库:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>maven.net.cn</id>
<name>Mirror from Maven in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<name>Mirror from Maven Repo2</name>
<url>http://repo2.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>sprintio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>https://repo.spring.io/libs-snapshot/</url>
</mirror>
<mirror>
<id>google</id>
<name>google maven</name>
<url>https://maven.google.com/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
第三步,修改mac的配置文件,涉及2个文件:
修改 .bash_profile
// 回到用户目录
cd ~
// 查看.bash_profile,注意这是一个隐藏文件,需要查看所有文件可以使用 ls -al
vim .bash_profile
// 修改配置,我这里安装了maven和mysql
export M2_HOME=/Users/用户目录/install/apache-maven-3.8.1
export PATH=$PATH:$M2_HOME/bin
PATH=$PATH:/usr/local/mysql/bin:$MAVEN_HOME/bin
// 编辑完成后,执行命令,这个命令只是在当前shell生效
source .bash_profile
修改 .zshrc
// 回到用户目录
cd ~
// 查看.zshrc,如果不存在就创建一个.zshrc
vim .zshrc
// 修改配置,这个配置修改后,以后.bash_profile这个配置在关闭窗口重新打开也会有效
source ~/.bash_profile