Elasticsearch Java API错误“NoClassDefFoundError”

时间:2015-11-24 08:38:46

标签: java elasticsearch java-api

我正在使用Java API。我尝试了以下方法:

Client client = TransportClient.builder().build() 
 .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9200));

但它给了我以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError:       com/google/common/collect/ImmutableMap
at org.elasticsearch.client.transport.TransportClient$Builder.<init>(TransportClient.java:84)
at org.elasticsearch.client.transport.TransportClient.builder(TransportClient.java:76)
at tools.Tools.Searcher(Tools.java:195)
at tools.Tools.main(Tools.java:60)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.ImmutableMap
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 4 more
Java Result: 1

我正在使用Elasticsearch 2.0.0,它在端口9200上运行

导致该错误的原因是什么?如何解决?

2 个答案:

答案 0 :(得分:1)

我也有这个问题,但是当我将guava-18.0.jar添加到构建路径中时,它可以工作。希望它适合你。

答案 1 :(得分:1)

您可以使用Unirest API for Java。这是非常容易使用。

http://unirest.io/java.html

检查它的文档。我自己是初学者,我发现这很容易实现。

只需在您的pom文件中添加以下maven依赖项。

<dependency>
    <groupId>com.mashape.unirest</groupId>
    <artifactId>unirest-java</artifactId>
    <version>1.4.7</version>
</dependency>

你的java实现将是这样的:

HttpResponse<String> response = Unirest.get("http:localhost:9200").asString();