【问题标题】:Why do I get a NoSuchMethodError in my java unit tests but the IDE doesn't show classpath problems?为什么我的 java 单元测试中出现 NoSuchMethodError 但 IDE 没有显示类路径问题?
【发布时间】:2020-07-16 12:39:16
【问题描述】:

我有一个使用 com.google.guava API 的一些方法的单元测试,它作为子依赖项包含在我在 pom.xml 中声明的其他一些依赖项中。 IDE,在我的例子中是 eclipse,没有显示任何问题。

但是当我运行测试时,我得到了错误:

com.google.common.util.concurrent.ExecutionError: java.lang.NoSuchMethodError: com.google.common.base.Objects.firstNonNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

我见过其他用户通过像这样排除番石榴来解决此问题:

<dependency>
  <groupId>com.atlassian.activeobjects</groupId>
  <artifactId>activeobjects-test</artifactId>
  <version>${ao.version}</version>
  <exclusions>
    <exclusion>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
    </exclusion>
  </exclusions>
  <scope>test</scope>
</dependency>

但这并没有帮助。相反,它还在我的非测试代码中导致了类路径错误。 我能做些什么呢?

【问题讨论】:

    标签: java maven classpath pom.xml guava


    【解决方案1】:

    我发现如果你在 pom 中显式添加 guava 的依赖,错误就消失了!

    所以我只是添加了这个依赖:

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>19.0</version>
    </dependency>
    

    【讨论】:

      【解决方案2】:

      就我而言,此错误已通过使用更新版本的活动对象 (2.0.0 --> 3.0.0) 得到修复

      <properties>
        <ao.version>3.0.0</ao.version>
      </properties>
      

      【讨论】:

        猜你喜欢
        • 2011-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-02
        • 1970-01-01
        • 2022-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多