【问题标题】:Maven 3.0.4 NoSuchMethod: ... java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf(..)Maven 3.0.4 NoSuchMethod: ... java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf(..)
【发布时间】:2013-01-04 21:18:06
【问题描述】:

我已经安装了Maven 3.0.4Homebrew,每当我运行mvn 命令时,我都会得到以下信息:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableSet;

从谷歌搜索该错误似乎与某种 Google guava 工具/库有关——我对此一无所知。 我试图替换 maven/bin 目录中的一些罐子,但没有任何影响

有什么帮助吗?我不知道问题是从哪里开始的,但现在我无法使用 mvn 运行任何东西。

这似乎是一个相关的问题,但我的项目没有直接引用 guava*.jar 文件:

NoSuchMethod error getting a gdata service

这里是完整的 mvn -X (我在当前目录中使用 pom.xml 运行)

    Jordans-iMac:spring-mvc-setup jordanbaucke$ mvn -X
Apache Maven 3.0.4 (r1232337; 2012-01-17 01:44:56-0700)
Maven home: /usr/local/Cellar/maven/3.0.4/libexec
Java version: 1.7.0_09, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.2", arch: "x86_64", family: "mac"
---------------------------------------------------
constituent[0]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/aether-api-1.13.1.jar
constituent[1]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/aether-connector-wagon-1.13.1.jar
constituent[2]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/aether-impl-1.13.1.jar
constituent[3]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/aether-spi-1.13.1.jar
constituent[4]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/aether-util-1.13.1.jar
constituent[5]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/commons-cli-1.2.jar
constituent[6]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-aether-provider-3.0.4.jar
constituent[7]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-artifact-3.0.4.jar
constituent[8]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-compat-3.0.4.jar
constituent[9]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-core-3.0.4.jar
constituent[10]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-embedder-3.0.4.jar
constituent[11]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-model-3.0.4.jar
constituent[12]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-model-builder-3.0.4.jar
constituent[13]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-plugin-api-3.0.4.jar
constituent[14]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-repository-metadata-3.0.4.jar
constituent[15]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-settings-3.0.4.jar
constituent[16]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/maven-settings-builder-3.0.4.jar
constituent[17]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/plexus-cipher-1.7.jar
constituent[18]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/plexus-component-annotations-1.5.5.jar
constituent[19]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/plexus-interpolation-1.14.jar
constituent[20]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/plexus-sec-dispatcher-1.3.jar
constituent[21]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/plexus-utils-2.0.6.jar
constituent[22]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/sisu-guava-0.9.9.jar
constituent[23]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/sisu-guice-3.1.0-no_aop.jar
constituent[24]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/sisu-inject-bean-2.3.0.jar
constituent[25]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/sisu-inject-plexus-2.3.0.jar
constituent[26]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/wagon-file-2.2.jar
constituent[27]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/wagon-http-2.2-shaded.jar
constituent[28]: file:/usr/local/Cellar/maven/3.0.4/libexec/lib/wagon-provider-api-2.2.jar
---------------------------------------------------
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableSet;
    at com.google.inject.internal.InstanceBindingImpl.<init>(InstanceBindingImpl.java:51)
    at com.google.inject.internal.BindingBuilder.toInstance(BindingBuilder.java:95)
    at com.google.inject.internal.InjectorShell$RootModule.configure(InjectorShell.java:329)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:229)
    at com.google.inject.spi.Elements.getElements(Elements.java:103)
    at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:136)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
    at com.google.inject.Guice.createInjector(Guice.java:94)
    at com.google.inject.Guice.createInjector(Guice.java:71)
    at com.google.inject.Guice.createInjector(Guice.java:61)
    at org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:470)
    at org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:196)
    at org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:160)
    at org.apache.maven.cli.MavenCli.container(MavenCli.java:375)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:191)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

更新

降级到 Java 1.6,同时卸载 Macports。同样的问题。

【问题讨论】:

  • 您能提供更多信息吗?你只是在运行'mvn'还是有你正在传递的参数?您是否在带有 pom 文件的项目目录中运行它?使用 -X 参数再次运行它并提供最后 10 行左右。
  • 我对使用 Homebrew 安装 Java 的东西非常谨慎;我总是只安装普通的 Java 方式(解压缩)并以这种方式运行。
  • @DaveNewton 我用 normal java way (untar) 重新安装了,我得到了同样的错误!
  • 看来我运行的是10.6.8,khmarbase运行的是10.5.8,而你运行的是10.8.2,所以mac jdk可能有问题
  • OSX 如输出所示:10.8.2

标签: maven guava


【解决方案1】:

问题是 MAVEN_HOME 变量的错误集导致它指向错误的文件夹

Maven home: /usr/local/Cellar/maven/3.0.4/libexec

此外,您使用的安装看起来不像 maven.apache.org 下载页面中的默认安装。

您应该从 maven.apache.org 下载 apache-maven-3.0.4-bin.tar.gz 解压缩它并将 MAVEN_HOME 指向解压缩存档的根目录,例如:

/usr/local/apache-maven-3.0.4

并将 bin 文件夹 /usr/local/apache-maven-3.0.4/bin 放入 PATH。如果你打电话

mvn --version

应该打印出或多或少类似于以下内容的内容:

mac:~ km$ mvn --version
Apache Maven 3.0.4 (r1232337; 2012-01-17 09:44:56+0100)
Maven home: /usr/share/maven
Java version: 1.6.0_26, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.5.8", arch: "x86_64", family: "mac"
mac:~ km$ 

【讨论】:

  • 刚刚从 tarball / zip 安装它的输出添加到原始问题。同样的问题。
【解决方案2】:

看起来您安装的 Maven 版本依赖于不正确的 Guava 版本。 Maven 3 显然依赖于 Guice 和 Guava,因此该错误并非完全是虚假的。这可能是您使用的 Homebrew 软件包的问题,​​它具有不正确的库依赖项(它似乎使用的是 Guava 的 0.9.9。您应该向软件包维护者提出这个问题和/或安装 tarball / zip 版本而不是使用自制。

【讨论】:

  • 刚刚从 tarball / zip 安装它的输出添加到原始问题。同样的问题。
【解决方案3】:

在 OS X 上遇到类似问题,使用 maven 3.2.2 和 Java 1.8。 'mvn clean test' 失败,没有找到类定义错误。 将maven升级到3.3.9,可以成功运行mvn命令了。

【讨论】:

    【解决方案4】:

    可能是您的某些 jar 依赖于 google/guava jar,如果它们不在构建路径中,或者如果它们中有多个,则可能会引发不一致,从而导致错误。 一个快速的解决方案是在你的 pom 中添加最新版本的番石榴

     <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>24.0-jre</version>
        </dependency>
    

    现在检查依赖层次结构,如果除了 guava 之外的任何 Jar 引用任何其他旧 jar 的 guava/google-collections。如果是这样,那么排除它,像这样

    <exclusions>
                <exclusion>
                    <groupId>com.google.collections</groupId>
                    <artifactId>google-collections</artifactId>
                </exclusion>
     </exclusions>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2012-03-03
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多