Разделитель аварийно завершается на простом Шаблоне

Я только запускаю нам Гуаву вместо Наборов Google. Класс Разделителя казался прохладным. Но когда я использую его, как это:

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. Платформа". таким образом, немного трудно предположить то, что идет не так, как надо.

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

8
задан ColinD 27 June 2010 в 04:19
поделиться

2 ответа

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

Edit: Похоже, что проблема заключается в том, что у вас есть и google-collections, и guava в вашем runtime classpath. Platform (внутренний класс) существовал в google-collections, но не имел метода precomputedCharMatcher. Splitter правильно загружается из банка guava, но Platform загружается из банка google-collect.

8
ответ дан 5 December 2019 в 06:52
поделиться

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

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

13
ответ дан 5 December 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: