当我在集群上运行jar时,NoSuchMethodError

时间:2015-09-08 15:05:48

标签: java maven hadoop guava

当我运行单元测试时,一切正常,但是当我在集群上运行它时,我得到NoSuchMethodError

2015-09-07 16:51:40,143 FATAL [main] org.apache.hadoop.mapred.YarnChild:运行child时出错:java.lang.NoSuchMethodError:com.google.common.base.Splitter.splitToList(Ljava /郎/ CharSequence中;)Ljava / util的/列表;

在pom.xml中我添加了番石榴: com.google.guava:番石榴:18.0

当我设置番石榴版本14.0时,我遇到了同样的错误。我该怎么办?

2 个答案:

答案 0 :(得分:0)

检查类路径中的Splitter类。 可能有两个具有相同名称的类Splitter类来自两个不同的jar,一个类覆盖另一个。

在所有jar Splitter类存在的情况下检查您的工作区,并删除不需要的一个依赖项。这应该有用。

答案 1 :(得分:0)

根据the change log,自版本15.0开始引入public List<String> com.google.common.base.Splitter.splitToList(CharSequence)。因此,您可能需要将版本从14.0更改为15.0或更高版本。我认为18.0也应该有用......

 +   * @since 15.0
 +   */
 +  @Beta
 +  public List<String> splitToList(CharSequence sequence) {