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

本文介绍了在使用IntelliJ IDEA进行Maven项目构建时遇到的'Unable to import maven project'错误,错误源于IDE版本与Maven版本不兼容。通过查看错误日志,定位到问题与PlexusContainer相关。解决方案是将Maven版本回退到兼容的3.5.4,从而成功解决构建问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天在编译一个老项目时,一直报“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_一醉南柯的博客-优快云博客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.youkuaiyun.com/dpl12/article/details/104880504/

### 解决 Java 中 `ComponentLookupException` 和 `ProvisionException` 异常 当遇到 `java.lang.RuntimeException: org.codehaus.plexus.component.repository.exception.ComponentLookupException` 或者 `com.google.inject.ProvisionException` 这样的异常时,通常意味着依赖注入框架无法正确创建所需的组件实例。这类错误可能由多种原因引起。 #### 配置 Maven 设置文件 对于基于Maven构建项目,在本地环境中配置不正确可能会引发上述问题之一。确保项目的 `settings.xml` 文件已正确定义了本地仓库路径以及可靠的远程镜像源可以有效减少此类问题的发生概率[^3]: ```xml <localRepository>D:\develop\apache-maven-3.6.3\mvn_repo</localRepository> <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ``` 通过指定一个有效的本地存储库位置并设置合适的镜像服务器(如阿里云),可以帮助解决由于网络连接不稳定或其他因素造成的依赖下载失败情况。 #### 检查 Plexus 组件定义 如果应用程序使用的是Plexus容器,则应仔细审查所有自定义组件类及其相应的角色提示符(role hints),以确认它们被正确声明并且实现了预期接口。任何拼写上的失误都可能导致查找特定服务实现时出现问题[^1]。 #### Guice 注入器初始化失败排查 针对Guice框架抛出的 `CreationException` 错误消息,这表明在尝试建立新的 Injector 实例期间遇到了障碍。此时应该重点检查模块绑定逻辑是否存在循环依赖关系或是其他非法状态;另外还需验证所涉及插件版本间的兼容性状况是否良好[^2]。 #### 示例代码调整 假设存在某个类试图利用构造函数来进行字段级别的DI操作却遭遇了上述提及类型的运行期崩溃现象,那么可以通过简化构造过程来临时绕过该难题直到根本原因得到彻底查明为止: ```java public class MyService { private final Dependency dependency; @Inject // 如果采用JSR-330标准注解的话 public MyService(Dependency dependency) { this.dependency = Objects.requireNonNull(dependency); } } ``` 为了进一步诊断具体哪个部分出了差错,可以在启动应用之前启用更详细的日志记录级别以便捕获更多上下文信息用于后续分析工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

狂龙骄子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值