所报错误为:java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
at org.elasticsearch.threadpool.ThreadPool.<clinit>(ThreadPool.java:190)
at org.elasticsearch.client.transport.TransportClient$Builder.build(TransportClient.java:133)
准确定位错误的位置为:在抛异常的代码上方添加输出代码(
System.out.println("----------------------" + this.getClass().getResource("/com/google/common/collect/Sets.class"));
System.out.println("============================");
System.out.println("============================");
)可以准确定位是哪个位置的哪个jar包导致项目的jar包冲突。
错误的原因:
- spark2.2.3默认$spark_home/lib/jars/中的guava-14.0.1.jar而es中所依赖的jar包为guava-18.0.jar.
- guava-14.0.1.jar中不具有newConcurrent