Ошибка создания экземпляра EventBus в Java
Я пытаюсь использовать EventBus из библиотек Google Guava.
Из документации 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: без улучшений. В Google я не могу ничего найти. Это проблема с гуавой? Или, как обычно, я что-то упускаю?
С наилучшими пожеланиями,
Alessandro
2 ответа
Чтобы расширить то, что сказал @biziclop, у вас, скорее всего, есть и последняя версия Guava, и либо google-collect, либо версия Guava до 3.0 на вашем classpath. Objects.firstNonNull был добавлен в 3.0, предполагая, что загружается старая версия этого класса.
У меня такая же проблема. Я использовал google-collection 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>