IDEA配置JDK、Maven 常见错误总结今天开始分享,新的项目要求更高版本的配置,比如要求JDK版本为11,或者新下载的项目JDK版本为11,而自己本地环境的是1.8版本的,依次需要升级版本到11。
1、问题产生的原因分析,启动新下载的项目时报错如下:
Error:(49, 86) java: 无法推断com.fasterxml.jackson.core.type.TypeReference<T>的类型参数
原因: -source 8 中不支持 '<>' 具有匿名的内部类
(请使用 -source 9 或更高版本以启用 '<>' 具有匿名的内部类)
显然我IDEA上配置的JDK版本8 比较低,至少应该是9。其实点击红色代码出可以在pom文件自动导入以下配置也可以临时解决:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>9</source>
<target>9</target>
</configuration>
</plugin>
常用考虑,根据团队需求我安装了JDK11,但是发现还是报同样的错误,于是我就怀疑Maven版本不对。
2、排查解决,查阅版本关系然后和同事确认了一下,团队Maven版本为3.8.6,而我的本地配置的是3.3.9,显然低了很多,于是我下载安装了3.8.6版本的Maven,各种配置统一之后,有爆出新的错误,点击看到IDEA的日志:
2022-08-29 18:45:21,044 [34871123] ERROR - #org.jetbrains.idea.maven - IntelliJ IDEA 2020.1.2 Build #IU-201.7846.76
2022-08-29 18:45:21,044 [34871123] ERROR - #org.jetbrains.idea.maven - JDK: 11.0.7; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o.
2022-08-29 18:45:21,044 [34871123] ERROR - #org.jetbrains.idea.maven - OS: Windows 10
2022-08-29 18:45:21,048 [34871127] ERROR - #org.jetbrains.idea.maven - Last Action: Maven.Reimport
2022-08-29 18:45:25,492 [34875571] ERROR - #org.jetbrains.idea.maven - 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
java.lang.RuntimeException: 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
at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.getComponent(Maven3XServerEmbedder.java:489)
at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.customizeComponents(Maven3XServerEmbedder.java:578)
at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.customize(Maven3XServerEmbedder.java:546)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
显然发现maven版本和idea版本不匹配,经查阅,idea2020.1使用maven3.8.6会出现报错情况,换成3.6.3即可,于是下载安装3.6.3,统一配置后,以上两个问题迎刃而解,即pom文件不需要新加关于JDK9的配置,同时都兼容,即JDK11,Maven3.6.3,Idea 为2020版本。
3、如果还有问题,可以在maven的setting.xml 文件里添加配置试试,比如JDK11
<profile>
<id>jdk-11</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>11</jdk>
</activation>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
</properties>
</profile>
JDK1.8 配置:
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
到此、暂时告一段落!