# Exception when getting mapping using Java API

**URL:** <https://discuss.elastic.co/t/exception-when-getting-mapping-using-java-api/89519>\
**Category:** Elasticsearch\
**Created:** [June 15, 2017, 7:53am UTC](https://discuss.elastic.co/t/exception-when-getting-mapping-using-java-api/89519 "2017-06-15T07:53:02Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![mcrandy](https://avatars.discourse-cdn.com/v4/letter/m/54ee81/32.png) [@mcrandy](https://discuss.elastic.co/u/mcrandy)\
**Post date:** [June 15, 2017, 7:53am UTC](https://discuss.elastic.co/t/exception-when-getting-mapping-using-java-api/89519/1 "2017-06-15T07:53:02Z")

</div>

We're trying to get mapping for an index using Java API according to:

```
 final GetMappingsResponse response = esClient.admin().indices().prepareGetMappings(indexName)
                   .setTypes(indexType).execute().actionGet();

```

Call fails and throws following exception:

```
TransportSerializationException[Failed to deserialize response of type [org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse]]; nested: NoClassDefFoundError[Could not initialize class org.elasticsearch.cluster.metadata.MappingMetaData];
        org.elasticsearch.transport.netty.MessageChannelHandler.handleResponse(MessageChannelHandler.java:152)
        org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:124)
        org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
        org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
        org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
        org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
        org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
        org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
        org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
        org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
        org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
        org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
        org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
        org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
        org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
        org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
        org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
        org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
        org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        java.lang.Thread.run(Thread.java:745)
</pre></p><p><b>root cause</b> <pre>java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.cluster.metadata.MappingMetaData
        org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse.readFrom(GetMappingsResponse.java:62)
        org.elasticsearch.transport.netty.MessageChannelHandler.handleResponse(MessageChannelHandler.java:150)
        org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:124)
        org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
        org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
        org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
        org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
        org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
        org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
        org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
        org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
        org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
        org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
        org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
        org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
        org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
        org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
        org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
        org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
        org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        java.lang.Thread.run(Thread.java:745)

```

We're using Elastic 2.4.1. Things we have already verified according to suggestion found online:

- JVM is same across cluster
- Elastic client version is same as cluster version
- Elastic dependencies are available on classpath.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 15, 2017, 8:23am UTC](https://discuss.elastic.co/t/exception-when-getting-mapping-using-java-api/89519/2 "2017-06-15T08:23:01Z")

</div>

That's super strange. Are you sure you don't have different versions in your classpath?

---

<div class="post-metadata">

**Author:** ![mcrandy](https://avatars.discourse-cdn.com/v4/letter/m/54ee81/32.png) [@mcrandy](https://discuss.elastic.co/u/mcrandy)\
**Post date:** [June 15, 2017, 8:31am UTC](https://discuss.elastic.co/t/exception-when-getting-mapping-using-java-api/89519/3 "2017-06-15T08:31:44Z")

</div>

Versions of elastic- jar? Nope. I'm certain that we only have elasticsearch-2.4.1.jar on classpath.

Are there other dependencies that we should look into?

---

<div class="post-metadata">

**Author:** ![mcrandy](https://avatars.discourse-cdn.com/v4/letter/m/54ee81/32.png) [@mcrandy](https://discuss.elastic.co/u/mcrandy)\
**Post date:** [June 15, 2017, 8:32am UTC](https://discuss.elastic.co/t/exception-when-getting-mapping-using-java-api/89519/4 "2017-06-15T08:32:43Z")

</div>

I can add that we're doing:

```
 GetSettingsResponse getSettingsResponse = esClient.admin().indices().prepareGetSettings(storeName).execute()
                .actionGet();

```

from the same component and that works

---

<div class="post-metadata">

**Author:** ![mcrandy](https://avatars.discourse-cdn.com/v4/letter/m/54ee81/32.png) [@mcrandy](https://discuss.elastic.co/u/mcrandy)\
**Post date:** [June 15, 2017, 12:48pm UTC](https://discuss.elastic.co/t/exception-when-getting-mapping-using-java-api/89519/5 "2017-06-15T12:48:16Z")

</div>

We restarted our container running the component and tried again.

Instead of:

`java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.cluster.metadata.MappingMetaData`

we then got:

`TransportSerializationException[Failed to deserialize response of type [org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse]]; nested: NoClassDefFoundError[com/ning/compress/lzf/util/ChunkDecoderFactory]; nested: ClassNotFoundException[com.ning.compress.lzf.util.ChunkDecoderFactory];`

So problem was that "com.ning.compress.lzf.util.ChunkDecoderFactory" was missing on classpath.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 13, 2017, 12:48pm UTC](https://discuss.elastic.co/t/exception-when-getting-mapping-using-java-api/89519/6 "2017-07-13T12:48:20Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
