traduccion spanish juice fruta examples español java guava

java - spanish - guava maven



no existe tal error de método: ImmutableList.copyOf() (5)

Estoy usando Guava-05-snapshot, con JDK 1.6 de Sun. El código explota al ejecutar este fragmento:

List<String> badpasswords = Lists.newArrayList( Password.badWords); Collections.sort(badpasswords); ImmutableList<String> tmp = ImmutableList.copyOf(badpasswords);

Específicamente en la llamada ImmutableList.copyOf (). Este código ha funcionado durante meses, utilizando el antiguo código Google-Collections.

java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;

Password.badWords es un ImmutableSet<String> y la creación de la matriz de escritura y el ordenamiento funcionan perfectamente. Pero los intentos de convertir la matriz en una ImmutableList fallan.



Esto también funciona bien para mí usando la versión oficial (no instantánea) de guava-r05 de Maven. Por cierto, esta podría ser una forma más agradable de hacer lo mismo:

ImmutableList<String> sorted = Ordering.natural() .immutableSortedCopy(Password.badWords);


Guava es un superconjunto totalmente compatible de Google Collections, no cambiamos nada de manera incompatible. (Esto se prueba ejecutando todo el conjunto de pruebas de Google Collections (que es extensivo ) en comparación con el último envase de guayaba).

Creo que tienes una copia de google-collect - *. Jar aún hace su camino a tu classpath. O explícitamente, o porque algún otro tarro lo incluyó sin volver a empaquetarlo. Solo tienes que encontrarlo y eliminarlo.

En Google Collections, hubo un método ImmutableList.copyOf(Iterable) , y no hubo un método público ImmutableList.copyOf(Collection) . Lo cual está bien, porque una colección también es un iterable. En Guava, hemos añadido la sobrecarga de la colección. Esto es completamente compatible, ya que todas las fuentes que se usaron para compilar aún pueden hacerlo, y cualquier fuente compilada previamente simplemente seguirá haciendo referencia al método original.

El problema viene si compilas contra Guava pero luego ejecutas contra Google Collections. Creo que eso es lo que está ocurriendo.


Si se produce el error al implementar una aplicación web en WebLogic 12c (pero el JAR de guayaba está en WEB-INF / lib), la siguiente configuración en weblogic.xml ayudará a resolverlo:

<container-descriptor> <prefer-application-packages> <package-name>com.google</package-name> </prefer-application-packages> </container-descriptor>


Usar Guava incluido con GWT funcionó.

Agregué ambos archivos de Guava Jar (Versión 13) desde aquí code.google.com/p/guava-libraries a mi guerra / WEB-INF / lib y agregué guava-13.0.1.jar a mi ruta de compilación (clic derecho y agregar para construir el camino)