2012-07-09 15 views
6

Próbuję użyć EventBus bibliotek Google Guava.Guava java EventBus błąd wystąpienia

Z Guva documentation powinno być łatwe utworzenie instancji obiektu EventBus.

Mój kod:

package test; 

import com.google.common.eventbus.EventBus; 

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

dostaję ten błąd:

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 

Próbowałem z Guava 10,0, 11,0 i 12,0 i zawsze ten sam błąd. Jestem na OSX Lion i używam Netbeans 7.1: Próbowałem zarówno Java 6 (32 i 64bit), jak i Java 7: żadnych usprawnień. W Google nie mogę znaleźć niczego. Czy to jest problem z Guava? Lub, jak zwykle, czegoś brakuje?

poważaniem,

Alessandro

+3

Na pierwszy rzut oka wygląda jak błąd zazwyczaj dostajesz kiedy masz różne wersje tego samego pliku jar na ścieżce klas. – biziclop

+0

Właśnie próbowałem w systemie Windows z tymi samymi ustawieniami i działa dobrze. Spróbuję sprawdzić, czy mam różne wersje tego samego słoika. Dam ci znać: – Alejander

+3

Wypróbuj opcję wiersza poleceń '-verbose: class', aby sprawdzić, skąd pochodzą twoje klasy. – biziclop

Odpowiedz

17

Aby rozwinąć na co @biziclop powiedział, najprawdopodobniej mają zarówno najnowszą wersję guawa i albo Google zbierać lub wersję Guava przed do 3,0 na ścieżce klas . Objects.firstNonNull został dodany w wersji 3.0, co sugeruje, że ładowana jest stara wersja tej klasy.

+1

Dzięki za wzmiankę o google-collections w tej odpowiedzi - to był mój problem. Wyłączenie go w pom czyni lewę. – Ryan

+0

Miałem 2 wersje guawy i dawało mi Objects.firstNonNull error: can not find symbol. Usunięcie jednego z nich naprawiło błąd. –

2

Miałem ten sam problem. Używałem google-collections 1.0, gdzie guava jest v11. Ten problem odszedł po uaktualnieniu do

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

<dependency> 
    <groupId>com.google.collections</groupId> 
    <artifactId>google-collections</artifactId> 
    <version>1.0</version> 
</dependency> 
Powiązane problemy