2012-07-09 16 views
6

estoy tratando de utilizar EventBus de las bibliotecas de guayaba de Google.guayaba java EventBus error de instancias

De Guayaba de documentation que debe ser fácil para crear instancias de un objeto EventBus.

Mi código:

package test; 

import com.google.common.eventbus.EventBus; 

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

estoy recibiendo este error:

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 

He tratado con guayaba 10.0, 11.0 y 12.0 y siempre el mismo error. Estoy en OSX Lion y estoy usando Netbeans 7.1: He intentado tanto Java 6 (32 bits y 64 bits) y Java 7: no hay mejoras. En google no puedo encontrar nada. ¿Es un problema con la guayaba? O, como siempre, ¿me estoy perdiendo algo?

Saludos,

Alessandro

+3

A primera vista esto parece un error que se suele sentir cuando tiene diferentes versiones de un mismo archivo JAR en la ruta de clases. – biziclop

+0

Acabo de probar Windows con la misma configuración y funciona bien. Trataré de ver si tengo diferentes versiones del mismo contenedor. Me haré saber – Alejander

+3

Prueba el -verbose ': class' opción de línea de comandos para ver dónde están sus clases se carguen desde. – biziclop

Respuesta

17

Para ampliar lo @biziclop dijo, lo más probable es que tiene tanto una versión reciente de guayaba y, o bien google-recoja o una versión de guayaba antes de la 3.0 en la ruta de clases . Objects.firstNonNull se agregó en 3.0, lo que sugiere que se está cargando una versión anterior de esa clase.

+1

Gracias por mencionar google-collections en esta respuesta, ese era mi problema. Excluirlo en el pom es el truco. – Ryan

+0

tuve 2 versiones de guayaba y que me daba error Objects.firstNonNull: no puede encontrar símbolo. La eliminación de uno de ellos solucionó el error. –

2

que tenían el mismo problema. Estaba usando google-collections 1.0 donde guava es v11. Este problema se fue después de actualizar a

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

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