2012-07-09 16 views
6

GoogleのGuavaライブラリのEventBusを使用しようとしています。Guava java EventBusのインスタンス化エラー

Guavaのdocumentationより、EventBusオブジェクトをインスタンス化するのは簡単です。

マイコード:

package test; 

import com.google.common.eventbus.EventBus; 

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

私はこのエラーを取得しています:私はグアバ10.0、11.0および12.0と常に同じエラーで試してみた

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 

。私はOSX Lionを使い、Netbeans 7.1を使用しています。Java 6(32ビットと64ビット)とJava 7の両方を試しました。改善はありませんでした。 Googleでは何も見つかりません。グアバの問題ですか?または、通常、何かが欠けていますか?

言っ@biziclopに拡大すること敬具、

アレッサンドロ

+3

から

<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency> にアップグレードした後に、この問題は去っていきました。 – biziclop

+0

私はちょうど同じ設定でWindows上で試してみました。うまくいきます。私は同じ瓶の異なるバージョンを持っているかどうかを調べるつもりです。私はあなたに知らせます – Alejander

+3

'-verbose:class'コマンドラインオプションを使って、あなたのクラスが実際にどこからロードされているかを調べてください。 – biziclop

答えて

17

は、あなたが最も可能性の高いグアバの最近のバージョンの両方を持っており、いずれかのgoogle-収集したり、クラスパス上の前に3.0へのグアバのバージョン。 Objects.firstNonNullが3.0で追加されました。これは、そのクラスの古いバージョンがロードされていることを示しています。

+1

Googleのコレクションをこの回答で言及してくれてありがとう - それは私の問題でした。それをポンで除外することはそのトリックです。 – Ryan

+0

私はguavaの2つのバージョンを持っていて、それは私にObjects.firstNonNullエラーを与えていました:シンボルを見つけることができません。そのうちの1つを削除すると、エラーが修正されました。 –

2

私は同じ問題がありました。グーバがv11のgoogle-collections 1.0を使っていました。私はこれがあなたのクラスパス上に同じjarファイルの異なるバージョンを持っているとき、あなたは通常、取得エラーのように見える一見

<dependency> 
    <groupId>com.google.collections</groupId> 
    <artifactId>google-collections</artifactId> 
    <version>1.0</version> 
</dependency>