【发布时间】:2016-02-26 14:42:06
【问题描述】:
我正在使用 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 上运行
是什么导致了这个错误,我该如何解决?
【问题讨论】:
-
在构建路径中似乎没有支持 jar(google-collections.jar)。
-
@Karthick 好的,我下载了 google-collections-1.0.jar 文件,并导入了
import com.google.common.*;,但我仍然收到错误:Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.of(Ljava/lang/Obje... -
使用Maven之类的依赖管理工具来管理依赖而不是手动下载jar文件真是太好了。 Maven 将自动下载所有依赖项。您只需要添加像
这样的依赖项org.elasticsearch elasticsearch 2.0.0 -
@ShivanandPawar 我明白了。我最初想使用该解决方案,但我正在使用 java 应用程序。如何在 java 应用程序中添加此依赖项?我应该创建一个新的 Maven 应用程序,还是只添加一个 pom.xml 文件?
标签: elasticsearch java