使用com时出现NoSuchMethodError异常。谷歌。常见的基础分离器[英] NoSuchMethodError exception when using com.google.common.base.Splitter

问题描述

我正在尝试使用com.google.common.base.base.splitter如下

Iterable<String> segs = Splitter.on("/").split("one/two/three/four/five");

for (String seg : segs) {
  System.out.println(seg);
}

但是,我看到以下例外:

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)

有人知道我在这里做错了吗?

推荐答案

我遇到了同样的问题. 事实证明,我使用了旧版本的番石榴. 访问此网站: https://code.google.com/p/guava-libraries/,并下载较新版本.

顺便说一句,Google-Collections被更名为Guava.

其他推荐答案

使用以下依赖关系来解决问题

使用Maven添加对Guava的依赖性,请使用以下内容:

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

使用gradle添加依赖性:

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

其他推荐答案

您的问题是另一个库还可能包含一个Guava库,并且首先是从您的class路径加载的,而不是您想要的版本.这会导致此运行时例外.

本文地址:https://www.itbaoku.cn/post/978712.html