0

I'm upgrading my elasticsearch from 2.3.4 to 5.3.0

Below are the jars in my classpath

elasticsearch-5.3.0.jar
HdrHistogram-2.1.6.jar
hppc-0.7.1.jar
jackson-core-2.8.6.jar
jackson-dataformat-cbor-2.8.6.jar
jackson-dataformat-smile-2.8.6.jar
jackson-dataformat-yaml-2.8.6.jar
java-version-checker-5.3.0.jar
jna-4.2.2.jar
joda-time-2.9.5.jar
jopt-simple-5.0.2.jar
jts-1.13.jar
lucene-analyzers-common-6.4.1.jar
lucene-backward-codecs-6.4.1.jar
lucene-core-6.4.1.jar
lucene-grouping-6.4.1.jar
lucene-highlighter-6.4.1.jar
lucene-join-6.4.1.jar
lucene-memory-6.4.1.jar
lucene-misc-6.4.1.jar
lucene-queries-6.4.1.jar
lucene-queryparser-6.4.1.jar
lucene-sandbox-6.4.1.jar
lucene-spatial-6.4.1.jar
lucene-spatial-extras-6.4.1.jar
lucene-spatial3d-6.4.1.jar
lucene-suggest-6.4.1.jar
securesm-1.1.jar
snakeyaml-1.15.jar
t-digest-3.0.jar
transport-netty4-client-5.3.0.jar
percolator-client-5.3.0.jar
reindex-client-5.3.0.jar
lang-mustache-client-5.3.0.jar
transport-netty3-client-5.3.0.jar
transport-5.3.0.jar
log4j-api-2.7.jar
log4j-core-2.7.jar
log4j-1.2-api-2.7.jar
spatial4j-0.6.jar

when I'm doing

client = new PreBuiltTransportClient(Settings.EMPTY)
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300)) 

I get the below exception

Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/netty/logging/InternalLoggerFactory
    at org.elasticsearch.transport.Netty3Plugin.<clinit>(Netty3Plugin.java:46)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:376)
    at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:104)
    at org.elasticsearch.client.transport.TransportClient.newPluginService(TransportClient.java:101)
    at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:126)
    at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:268)
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:125)
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:111)
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:101)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
    at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:71)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite.callConstructor(ConstructorSite.java:42)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
    at org.hire.test.HudkiES.openClient(HudkiES.groovy:146)
    at org.hire.test.HudkiES.<init>(HudkiES.groovy:113)
    at org.hire.test.HudkiES.<init>(HudkiES.groovy)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
    at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:71)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:81)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
    at org.hire.test.HudkiES.main(HudkiES.groovy:1020)
Caused by: java.lang.ClassNotFoundException: org.jboss.netty.logging.InternalLoggerFactory
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 37 more

Java version 1.8

Does anyone also facing the same issue or know what I'm missing here?

Darth Shekhar
  • 115
  • 3
  • 16
  • seems similar to http://stackoverflow.com/questions/41642664/elastic-search-java-lang-noclassdeffounderror-org-elasticsearch-transport-netty Perhaps you have log4j not configured correctly – Phil Apr 07 '17 at 02:19
  • Thanks Phil, can you also please suggest what should be the configuration of log4j ? – Darth Shekhar Apr 07 '17 at 02:55
  • And also how is it a log4j configuration problem, as it looks like an issue of missing dependency – Darth Shekhar Apr 07 '17 at 02:58
  • Just a speculation. Libs often do class path scanning to see which loggers are available, but also have fall backs. It seem more like you have the wrong version of netty on the classpath. Your issue seems similar to https://github.com/elastic/elasticsearch/issues/22847 – Phil Apr 12 '17 at 04:45
  • Can you include the dependency tree of your project? You might see multiple libs pulling in netty. – Phil Apr 12 '17 at 04:46
  • True Phil, wrong version of netty on the classpath was the issue. Fixed it after cleaning my classpath. Thanks – Darth Shekhar Apr 12 '17 at 08:40

1 Answers1

0

Elasticsearch 5.3 is expecting version 4 of the NettyPlugin org.elasticsearch.transport.Netty4Plugin. You most likely have the wrong version on your classpath or both versions and the older version is getting grabbed first.

If you generate the dependency tree for your libs you see what versions are getting pulled in and could then include/exclude the right/wrong version.

Phil
  • 1,226
  • 10
  • 20