IDEA项目构建失败com.google.inject.CreationException: Unable to create injector

        今天在编译一个老项目时,一直报“Unable to import maven project: See logs for details”,查看错误明细,发现是因为IDE版本与Maven版本不兼容引起,降低Maven版本后编译成功。

目录

1、构建报错信息

2、查看日志详情

3、分析及排错

3.1、降低Maven版本

3.2、更换IDEA的Maven版本


运行环境:

OS:Windows 7 x64

IDE:IntelliJ IDEA 2018.2.3  Build #IC-182.4323.46 

JDK:1.8.0_201

Maven:3.5.4、3.6.3、3.8.5

1、构建报错信息

2、查看日志详情

 错误日志主要内容:

ERROR -      #org.jetbrains.idea.maven - com.google.inject.CreationException: Unable to create injector, see the following errors:

1) No implementation for org.apache.maven.model.path.PathTranslator was bound.
  while locating org.apache.maven.model.path.PathTranslator
    for field at org.apache.maven.model.interpolation.AbstractStringBasedModelInterpolator.pathTranslator(Unknown Source)
  at org.codehaus.plexus.DefaultPlexusContainer$1.configure(DefaultPlexusContainer.java:350)

2) No implementation for org.apache.maven.model.path.UrlNormalizer was bound.
  while locating org.apache.maven.model.path.UrlNormalizer
    for field at org.apache.maven.model.interpolation.AbstractStringBasedModelInterpolator.urlNormalizer(Unknown Source)
  at org.codehaus.plexus.DefaultPlexusContainer$1.configure(DefaultPlexusContainer.java:350)

2 errors
	at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:543)
	at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:159)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106)
	at com.google.inject.Guice.createInjector(Guice.java:87)
	at com.google.inject.Guice.createInjector(Guice.java:69)
	at com.google.inject.Guice.createInjector(Guice.java:59)
	at org.codehaus.plexus.DefaultPlexusContainer.addComponent(DefaultPlexusContainer.java:344)
	at org.codehaus.plexus.DefaultPlexusContainer.addComponent(DefaultPlexusContainer.java:332)
	at org.jetbrains.idea.maven.server.Maven3ServerEmbedderImpl.customizeComponents(Maven3ServerEmbedderImpl.java:569)
	at org.jetbrains.idea.maven.server.Maven3ServerEmbedderImpl.customize(Maven3ServerEmbedderImpl.java:540)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
	at sun.rmi.transport.Transport$1.run(Transport.java:200)
	at sun.rmi.transport.Transport$1.run(Transport.java:197)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162)
	at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227)
	at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179)
	at com.sun.proxy.$Proxy185.customize(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor1433.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.execution.rmi.RemoteUtil.invokeRemote(RemoteUtil.java:179)
	at com.intellij.execution.rmi.RemoteUtil.access$300(RemoteUtil.java:39)
	at com.intellij.execution.rmi.RemoteUtil$2$1$1.compute(RemoteUtil.java:160)
	at com.intellij.openapi.util.ClassLoaderUtil.runWithClassLoader(ClassLoaderUtil.java:66)
	at com.intellij.execution.rmi.RemoteUtil.executeWithClassLoader(RemoteUtil.java:231)
	at com.intellij.execution.rmi.RemoteUtil$2$1.invoke(RemoteUtil.java:157)
	at com.sun.proxy.$Proxy185.customize(Unknown Source)
	at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.doCustomize(MavenEmbedderWrapper.java:96)
	at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.lambda$customizeForResolve$1(MavenEmbedderWrapper.java:69)
	at org.jetbrains.idea.maven.server.RemoteObjectWrapper.perform(RemoteObjectWrapper.java:76)
	at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.customizeForResolve(MavenEmbedderWrapper.java:68)
	at org.jetbrains.idea.maven.project.MavenProjectsTree.resolve(MavenProjectsTree.java:1264)
	at org.jetbrains.idea.maven.project.MavenProjectsProcessorResolvingTask.perform(MavenProjectsProcessorResolvingTask.java:44)
	at org.jetbrains.idea.maven.project.MavenProjectsProcessor.doProcessPendingTasks(MavenProjectsProcessor.java:132)
	at org.jetbrains.idea.maven.project.MavenProjectsProcessor.access$000(MavenProjectsProcessor.java:32)
	at org.jetbrains.idea.maven.project.MavenProjectsProcessor$2.run(MavenProjectsProcessor.java:107)
	at org.jetbrains.idea.maven.utils.MavenUtil.lambda$runInBackground$5(MavenUtil.java:449)
	at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:314)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

3、分析及排错

        通过分析错误信息中的关键字 DefaultPlexusContainer 得知与Maven有关,因为2个月前有升级 Maven版本到3.8.5,尝试降低到 Maven-3.6.3 重新构建错误未解决,继续降到 Maven-3.5.4 版本后构建成功。

3.1、降低Maven版本

到官方仓库下载指定版本(如:maven-3.5.4)到本地(如:D:\android\apache-maven-3.5.4)

Index of /maven/maven-3/3.5.4/binariesicon-default.png?t=M5H6https://dlcdn.apache.org/maven/maven-3/3.5.4/binaries/

3.2、更换IDEA的Maven版本

 

参考文献:

「曹工杂谈」Maven底层容器Plexus Container的前世今生https://baijiahao.baidu.com/s?id=1710694753842479054&wfr=spider&for=pcmaven报错 org.jetbrains.idea.maven - com.google.inject.CreationException: Unable to create injector_一醉南柯的博客-CSDN博客No implementation for org.apache.maven.model.path.PathTranslator was bound.while locating org.apache.maven.model.path.PathTranslatorfor field at org.apache.maven.model.interpolation.AbstractString...https://blog.csdn.net/dpl12/article/details/104880504/

### 回答1: .codehaus.plexus.component.repository.exception.ComponentLookupException: com.google.inject.ProvisionException: 无法提供,参见以下错误:1)注入构造函数时出错,java.lang.NoSuchMethodError: org ### 回答2: .codehaus.plexus.component.composition.CycleDetectedInComponentGraphException. 这个错误是在使用Maven构建Java项目时可能出现的错误之一。该错误通常表示构建过程中出现了循环依赖,即两个或多个组件之间相互依赖,导致无法创建对象实例。 这个问题可能出现在使用依赖注入框架(例如Google Guice)时,框架尝试通过向构造函数注入依赖来创建对象实例。如果存在循环依赖,框架无法确定要先创建哪个对象实例,因此会抛出该错误。 解决这个问题的方法是检查项目配置文件,查找是否存在相互依赖的组件,并尝试解除它们之间的依赖关系。可以通过调整依赖版本或使用其他库来解决此问题。另外,还可以尝试使用更好的依赖注入框架,例如Spring Framework,因为它们通常能够更好地处理循环依赖。 ### 回答3: .codehaus.plexus.component.collections.java.JavaComponentDescriptorCollection.(Ljava/lang/iterable;Ljava/util/Map;)V at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105)... 这个错误是在使用Maven构建项目时出现的异常。它的原因可能是因为: 1.类路径问题:Maven构建项目时会检查类路径(classpath),如果需要的类没有在类路径下,就会报出这个错误。 2.版本不兼容:当Maven构建项目时需要使用某些特定版本的组件,但是这些组件的版本不兼容,会导致无法构建项目,从而出现这个错误。 3.组件创建失败:当需要创建某些组件时,如果出现创建失败,就会出现这个错误。可能是因为组件所需的其他组件缺失或者版本不兼容。 针对这个错误,可以尝试以下几种解决办法: 1.检查类路径:检查一下项目的类路径是否正确,是否缺失某些组件或者组件版本不正确。 2.调整组件版本:如果发现版本不兼容,可以尝试调整组件版本,使其兼容。 3.检查组件依赖关系:检查组件所需的其他组件是否存在,并且版本是否正确。 4.重新构建项目:如果以上方法都不能解决问题,可以尝试重新构建整个项目。有时候重新构建项目可以解决一些奇怪的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂龙骄子

独码乐,不如众码乐,乐享其中

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值