Сплиттер взрывается по простой схеме - PullRequest
8 голосов
/ 27 июня 2010

Я только начинаю нам гуаву вместо Google-коллекций. Класс Splitter показался крутым. Но когда я его использую, вот так:

private static final Pattern p = Pattern.compile(" +");
private static final Splitter usSplitter = Splitter.on(p).trimResults();

Я получаю дамп стека:

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:662)
        at com.google.common.base.CharMatcher.<clinit>(CharMatcher.java:69)
        at com.google.common.base.Splitter.<init>(Splitter.java:99)
        at com.google.common.base.Splitter.on(Splitter.java:208)

В javadocs ничего нет об этой «com.google.common.base.Platform». так что немного трудно угадать, что происходит не так.

Как видите, Шаблон очень прост.

Ответы [ 3 ]

13 голосов
/ 27 июня 2010

java.lang.NoSuchMethodError сообщает, что требуемый метод отсутствует в текущем пути к классам времени выполнения , когда он был там в пути к классам времени компиляции .

Другими словами, чтобы решить эту проблему, вам нужно выровнять свой путь к классу времени выполнения, чтобы иметь правильную версию API, которую вы использовали во время компиляции. Это также может быть вызвано смешиванием разных версий библиотеки по пути к классам во время выполнения. Очистите путь к классам.

8 голосов
/ 27 июня 2010

Какую версию Guava вы используете? Это прекрасно работает для меня с r05.

Редактировать: Кажется, что конкретная проблема заключается в том, что у вас есть и google-collection, и guava в пути к классам во время выполнения. Platform (внутренний класс) существовал в Google-коллекциях, но не имел метода precomputedCharMatcher. Splitter загружается из баночки гуавы правильно, но Platform загружается из баночки Google-сбора.

3 голосов
/ 30 сентября 2012

На самом деле.у вас есть две версии класса com.google.common.base.Platform, и один из этих классов имеет или не имеет метод.

Попробуйте удалить один из файлов jar.Предлагаю убрать google-collections.jar и оставить gauva.jar.

Будет нормально работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...