0

I am getting java.lang.NoClassDefFoundError: when trying to establish elasticsearch client. I know its mainly because of JAR version mismatch / if any JAR is missing, but i have searched for long and i dont know what I am missing.

List of JARs.

  1. elasticsearch-6.1.0.jar
  2. transport-7.3.1.jar

Code :

if(client==null){
    System.out.println("called  inside configure client ->> ");
    InetAddress address = InetAddress.getByName("localhost");

    int port = 9200;

    client =  new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new TransportAddress(address,port)); 

    String[] indices = client.admin().indices().getIndex(new GetIndexRequest()).actionGet().getIndices();
    for (String s : indices) {
        System.out.println("index  ->> " + s);
    }
}

Stacktrace :

Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/http/AbstractHttpServerTransport
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.elasticsearch.transport.Netty4Plugin.getSettings(Netty4Plugin.java:52)
at org.elasticsearch.plugins.PluginsService.lambda$getPluginSettings$0(PluginsService.java:82)
at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at org.elasticsearch.plugins.PluginsService.getPluginSettings(PluginsService.java:82)
at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:135)
at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:262)
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:130)
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:116)
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:106)
at elasticsearch.ElasticSearchMain.configureClient(ElasticSearchMain.java:96)
at elasticsearch.ElasticSearchMain.<init>(ElasticSearchMain.java:54)
at elasticsearch.ElasticSearchMain.main(ElasticSearchMain.java:309)
Bhavik Patel
  • 1,044
  • 1
  • 15
  • 33
  • r u using maven? how you are downloading there jars? and why you using 7.3.1 with es 6.x version ?? – Amit Aug 27 '19 at 09:52
  • No, I cannot use maven. I tried with 6.1 version `TransportClient` version as well, but it did not work, same error – Bhavik Patel Aug 27 '19 at 10:43
  • so r u downloading jars manually? – Amit Aug 27 '19 at 11:23
  • unfortunately yes. – Bhavik Patel Aug 27 '19 at 11:30
  • ohh, I would strongly suggest to move to maven or something, this way I can tell you what all dependencies u need to include – Amit Aug 27 '19 at 14:50
  • `transport` library should be the one containing the class definition (here's a [guy with similar problem](https://discuss.elastic.co/t/prebuilttransportclient-doesnt-exist-in-my-6-3-0-library/156223)). How do you run your java command? How do you specify the classpath? – Nikolay Vasiliev Aug 28 '19 at 16:02

0 Answers0