java guava splitter

java - Excepción NoSuchMethodError cuando se utiliza com.google.common.base.Splitter



guava (7)

Estoy tratando de usar com.google.common.base.Splitter de la siguiente manera

Iterable<String> segs = Splitter.on("/").split("one/two/three/four/five"); for (String seg : segs) { System.out.println(seg); }

Sin embargo, estoy viendo la siguiente excepción:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Platform.precomputeCharMatcher(Lcom/google/common/base/CharMatcher;)Lcom/google/common/base/CharMatcher; at com.google.common.base.CharMatcher.precomputed(CharMatcher.java:664) at com.google.common.base.CharMatcher.<clinit>(CharMatcher.java:71) at com.google.common.base.Splitter.<init>(Splitter.java:107) at com.google.common.base.Splitter.on(Splitter.java:171) at Test.main(Test.java:30)

¿Alguien tiene alguna idea de lo que estoy haciendo mal aquí?


Utilice la dependencia a continuación para solucionar el problema

Para agregar una dependencia en Guava usando Maven, usa lo siguiente:

<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency>

Para agregar una dependencia usando Gradle:

dependencies { compile ''com.google.guava:guava:19.0'' }


Hay 2 versiones: 1) com.google.guava: guava: 26.0-android 2) com.google.guava: guava: 26.0-jre. Lo más probable es que asignes una versión incorrecta como en mi caso.


Me encontré con el mismo problema. Resultó que usé una versión anterior de guayaba. Vaya a este sitio web: https://code.google.com/p/guava-libraries/ , y descargue una versión más reciente.

Por cierto, las colecciones de Google fueron renombradas a Guava.


Otra razón por la que esto sucede es si la biblioteca GSON se importa antes que la biblioteca de Guayaba.

Consulte: https://github.com/google/guava/issues/2786

Estaba importando los archivos jar de una carpeta a IntelliJ. Lo que terminó trabajando fue agregar una "z" al lado de gson (por lo que el jar se llamaría zgson) para que la guava se importe primero.


Para mí, esto sucede cuando tiene una dependencia que depende de una versión anterior de Guava, y esta dependencia aparece primero en la lista. La guayaba se resolverá en el lugar donde se encontró primero e ignorará el resto.

La solución es agregar primero la dependencia de la guayaba, pero tenga cuidado de que no rompa otros proyectos que usan guayaba.


Sí, es el problema solo con la biblioteca de guayaba. Mantenga la biblioteca actualizada y elimine todas las versiones restantes de guava si tiene alguna y pruebe. Debería funcionar bien.


Su problema es que otra biblioteca también puede contener una biblioteca de guayaba y se está cargando primero desde su classpath en lugar de la versión que desea. Esto causaría esta excepción de tiempo de ejecución.