6

我正在尝试使用 Google 的 Guava 库的 EventBus。

从 Guava 的文档中,实例化一个 EventBus 对象应该很容易。

我的代码:

package test;

import com.google.common.eventbus.EventBus;

public class Test {
    public static void main(String[] args) {
        EventBus bus = new EventBus("Sample");
    }
}

我收到此错误:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Objects.firstNonNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
at com.google.common.cache.CacheBuilder.getKeyStrength(CacheBuilder.java:355)
at com.google.common.cache.CustomConcurrentHashMap.<init>(CustomConcurrentHashMap.java:206)
at com.google.common.cache.ComputingCache.<init>(ComputingCache.java:39)
at com.google.common.cache.CacheBuilder.build(CacheBuilder.java:569)
at com.google.common.eventbus.EventBus.<init>(EventBus.java:156)
at test.Test.main(Test.java:7)
Java Result: 1

我已经尝试过使用 Guava 10.0、11.0 和 12.0 并且总是出现相同的错误。我在 OSX Lion 上使用 Netbeans 7.1:我尝试过 Java 6(32 位和 64 位)和 Java 7:没有改进。在谷歌上我找不到任何东西。是番石榴的问题吗?或者,像往常一样,我错过了什么?

此致,

亚历山德罗

4

2 回答 2

17

为了扩展@biziclop 所说的内容,您很可能在类路径中同时拥有最新版本的 Guava 和 google-collect 或 3.0 之前的 Guava 版本。Objects.firstNonNull 是在 3.0 中添加的,表明正在加载该类的旧版本。

于 2012-07-09T17:24:43.933 回答
3

我有同样的问题。我使用的是 google-collections 1.0,其中 guava 是 v11。这个问题在我升级到之后就消失了

<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency>

<dependency>
  <groupId>com.google.collections</groupId>
  <artifactId>google-collections</artifactId>
  <version>1.0</version>
</dependency>
于 2016-06-21T19:20:48.590 回答