2015-11-24 2 views
2

Я использую JAVA API. Я попытался следующие:Elasticsearch Java Api ERROR

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

поддержки банка (Google-collections.jar) не доступен в buildpath это кажется. – Karthick

+0

@ Karthick Хорошо, я загрузил файл google-collections-1.0.jar и импортировал 'import com.google.common. *;', Однако я все еще получаю сообщение об ошибке: «Исключение в потоке» main «java.lang. NoSuchMethodError: com.google.common.collect.ImmutableSet.of (Ljava/lang/Obje ... ' –

+0

Очень полезно использовать некоторые средства управления зависимостями, такие как Maven, для управления зависимостями, а не вручную загрузки файлов jar. Maven автоматически загрузит все зависимостей. Вам просто нужно добавить зависимость как \t org.elasticsearch \t elasticsearch \t 2.0.0

ответ

1

У меня тоже есть эта проблема, но когда я добавляю guava-18.0.jar в путь сборки, он работает. Надеюсь, это сработает для вас.

+0

Вы вообще не использовали Maven? –

+0

После добавления флага guava я получил ошибку '26 ноября 2015 года 12:00:44 org.elasticsearch.plugins.PluginsService INFO: [Kraken] загружен [], сайты [] Исключение в теме" main " java.lang.NoClassDefFoundError: org/apache/lucene/util/Версия \t at org.elasticsearch.Version. (Version.java:44) \t at org.elasticsearch.client.transport.TransportClient $ Builder.build (TransportClient.java:117) ' –

+0

, что означает, что вам не хватает другой банки, можете ли вы вставить детали сообщений об ошибках? когда я добавил банку гуавы, у него также были другие проблемы, но все NoClassDefFoundError, поэтому я проверяю, что jar он пропустил снова и снова, и добавьте недостающую банку в путь сборки. ну, jar i добавлен следующим образом: – chou

1

Вы можете использовать Unirest API для Java. Он очень прост в использовании.

http://unirest.io/java.html

Проверьте это документация. Я сам начинаю, и я нашел это очень простым в реализации.

Просто добавьте следующую зависимость maven в свой файл pom.

<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(); 
Смежные вопросы