# Java.lang.ClassNotFoundException: org.elasticsearch.transport.RemoteTransportException

**URL:** <https://discuss.elastic.co/t/java-lang-classnotfoundexception-org-elasticsearch-transport-remotetransportexception/19097>\
**Category:** Elasticsearch\
**Created:** [August 5, 2014, 2:57pm UTC](https://discuss.elastic.co/t/java-lang-classnotfoundexception-org-elasticsearch-transport-remotetransportexception/19097 "2014-08-05T14:57:52Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Earle\_Nietzel](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/earle_nietzel/32/1352_2.png) [@Earle\_Nietzel](https://discuss.elastic.co/u/Earle_Nietzel)\
**Post date:** [August 5, 2014, 2:57pm UTC](https://discuss.elastic.co/t/java-lang-classnotfoundexception-org-elasticsearch-transport-remotetransportexception/19097/1 "2014-08-05T14:57:52Z")

</div>

Using elasticsearch embedded in tomcat 7 where we have custom classloader  
that shares spring application beans with many webapps. The API's to these  
implementations are in shared but the implementations are in a separate  
classloader "ComponentLoader". Our search implementation is loaded from  
ComponentLoader where elasticsearch has been promoted as our default search  
engine.

Everything works fine on a single node but when in a cluster seeing the  
following ClassNotFoundException issue when shards are trying to update on  
other nodes.

Caused by: java.lang.ClassNotFoundException:  
org.elasticsearch.transport.RemoteTransportException  
at  
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)

at  
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)

at  
org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass(ThrowableObjectInputStream.java:93)

at  
org.elasticsearch.common.io.ThrowableObjectInputStream.readClassDescriptor(ThrowableObjectInputStream.java:67)

at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)

I thought this might have been related  
to [https://github.com/elasticsearch/elasticsearch/issues/4634](https://github.com/elasticsearch/elasticsearch/issues/4634) but that  
doesn't seem to be the case.

My next idea is to look at why  
org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass is  
invoking WebappClassLoader instead of our custom ComponentLoader and coerce  
it to use ours.

But I wanted to get some opinions on this strategy as I am new to  
elasticsearch 😉

my thanks,  
Earle

Full stack trace:

2014-08-05 01:25:26,685 WARN elasticsearch[app02][generic][T#1]  
org.elasticsearch.indices.cluster - [app02] [sakai\_index][0] failed to  
start shard  
org.elasticsearch.indices.recovery.RecoveryFailedException:  
[sakai\_index][0]: Recovery failed from  
[app01][0YtJIFeHSuehUfjjfMgv6A][ip-10-93-162-196][inet[/10.93.162.196:9300]]{local=false}  
into  
[app02][yshRulD0QjaNyu40Z6EGWQ][ip-10-7-174-145][inet[/10.7.174.145:9300]]{local=false}

at  
org.elasticsearch.indices.recovery.RecoveryTarget.doRecovery(RecoveryTarget.java:307)

at  
org.elasticsearch.indices.recovery.RecoveryTarget.access$300(RecoveryTarget.java:65)

at  
org.elasticsearch.indices.recovery.RecoveryTarget$2.run(RecoveryTarget.java:175)

at  
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at  
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:745)  
Caused by: org.elasticsearch.transport.RemoteTransportException: Failed to  
deserialize exception response from stream  
Caused by: org.elasticsearch.transport.TransportSerializationException:  
Failed to deserialize exception response from stream  
at  
org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:169)

at  
org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:123)

at  
org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)

at  
org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)

at  
org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)

at  
org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:296)

at  
org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)

at  
org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)

at  
org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)

at  
org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)

at  
org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)

at  
org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)

at  
org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268)

at  
org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255)

at  
org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)

at  
org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)

at  
org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)

at  
org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)

at  
org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)

at  
org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)

at  
org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)

at  
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at  
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:745)  
Caused by: java.io.InvalidClassException: failed to read class descriptor  
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1603)  
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)  
at  
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)  
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)  
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)  
at  
org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:167)

... 23 more  
Caused by: java.lang.ClassNotFoundException:  
org.elasticsearch.transport.RemoteTransportException  
at  
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)

at  
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)

at  
org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass(ThrowableObjectInputStream.java:93)

at  
org.elasticsearch.common.io.ThrowableObjectInputStream.readClassDescriptor(ThrowableObjectInputStream.java:67)

at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)  
... 28 more

--  
You received this message because you are subscribed to the Google Groups "elasticsearch" group.  
To unsubscribe from this group and stop receiving emails from it, send an email to [elasticsearch+unsubscribe@googlegroups.com](mailto:elasticsearch+unsubscribe@googlegroups.com).  
To view this discussion on the web visit [https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com](https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com).  
For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

---

<div class="post-metadata">

**Author:** ![jprante](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jprante/32/44941_2.png) [@jprante](https://discuss.elastic.co/u/jprante)\
**Post date:** [August 5, 2014, 3:39pm UTC](https://discuss.elastic.co/t/java-lang-classnotfoundexception-org-elasticsearch-transport-remotetransportexception/19097/2 "2014-08-05T15:39:13Z")

</div>

The cluster wants to transport an exception to your web app container, and  
the web app does not have access to elasticsearch jar.

You should have a look at the ES server logs, if there are any exceptions,  
to find the real problem.

Then, after fixing the real problem, you should try to configure your web  
app so the elasticsearch jar is in the classpath.

To your question about WebAppClassLoader: ES uses the thread context class  
loader  
[https://github.com/elasticsearch/elasticsearch/blob/master/src/main/java/org/elasticsearch/common/Classes.java#L56](https://github.com/elasticsearch/elasticsearch/blob/master/src/main/java/org/elasticsearch/common/Classes.java#L56)

Also, do you use any ES plugins? If plugins throw exceptions, they must  
also be available in the web app.

Jörg

On Tue, Aug 5, 2014 at 4:57 PM, Earle Nietzel [earle.nietzel@gmail.com](mailto:earle.nietzel@gmail.com)  
wrote:

> Using elasticsearch embedded in tomcat 7 where we have custom classloader  
> that shares spring application beans with many webapps. The API's to these  
> implementations are in shared but the implementations are in a separate  
> classloader "ComponentLoader". Our search implementation is loaded from  
> ComponentLoader where elasticsearch has been promoted as our default search  
> engine.
> 
> Everything works fine on a single node but when in a cluster seeing the  
> following ClassNotFoundException issue when shards are trying to update on  
> other nodes.
> 
> Caused by: java.lang.ClassNotFoundException:  
> org.elasticsearch.transport.RemoteTransportException  
> at  
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
> 
> at  
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
> 
> at  
> org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass(ThrowableObjectInputStream.java:93)
> 
> at  
> org.elasticsearch.common.io.ThrowableObjectInputStream.readClassDescriptor(ThrowableObjectInputStream.java:67)
> 
> at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)
> 
> I thought this might have been related to  
> [Rename `ElasticSearch*` to `Elasticsearch*` · Issue #4634 · elastic/elasticsearch · GitHub](https://github.com/elasticsearch/elasticsearch/issues/4634) but that  
> doesn't seem to be the case.
> 
> My next idea is to look at why  
> org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass is  
> invoking WebappClassLoader instead of our custom ComponentLoader and coerce  
> it to use ours.
> 
> But I wanted to get some opinions on this strategy as I am new to  
> elasticsearch 😉
> 
> my thanks,  
> Earle
> 
> Full stack trace:
> 
> 2014-08-05 01:25:26,685 WARN elasticsearch[app02][generic][T#1]  
> org.elasticsearch.indices.cluster - [app02] [sakai\_index][0] failed to  
> start shard  
> org.elasticsearch.indices.recovery.RecoveryFailedException:  
> [sakai\_index][0]: Recovery failed from  
> [app01][0YtJIFeHSuehUfjjfMgv6A][ip-10-93-162-196][inet[/10.93.162.196:9300]]{local=false}  
> into  
> [app02][yshRulD0QjaNyu40Z6EGWQ][ip-10-7-174-145][inet[/10.7.174.145:9300]]{local=false}
> 
> at  
> org.elasticsearch.indices.recovery.RecoveryTarget.doRecovery(RecoveryTarget.java:307)
> 
> at  
> org.elasticsearch.indices.recovery.RecoveryTarget.access$300(RecoveryTarget.java:65)
> 
> at  
> org.elasticsearch.indices.recovery.RecoveryTarget$2.run(RecoveryTarget.java:175)
> 
> at  
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> 
> at  
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> 
> at java.lang.Thread.run(Thread.java:745)  
> Caused by: org.elasticsearch.transport.RemoteTransportException: Failed to  
> deserialize exception response from stream  
> Caused by: org.elasticsearch.transport.TransportSerializationException:  
> Failed to deserialize exception response from stream  
> at  
> org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:169)
> 
> at  
> org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:123)
> 
> at  
> org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
> 
> at  
> org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> 
> at  
> org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
> 
> at  
> org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:296)
> 
> at  
> org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
> 
> at  
> org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
> 
> at  
> org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
> 
> at  
> org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
> 
> at  
> org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> 
> at  
> org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
> 
> at  
> org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268)
> 
> at  
> org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255)
> 
> at  
> org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
> 
> at  
> org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
> 
> at  
> org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
> 
> at  
> org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
> 
> at  
> org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
> 
> at  
> org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
> 
> at  
> org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
> 
> at  
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> 
> at  
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> 
> at java.lang.Thread.run(Thread.java:745)  
> Caused by: java.io.InvalidClassException: failed to read class descriptor  
> at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1603)  
> at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)  
> at  
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)  
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)  
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)  
> at  
> org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:167)
> 
> ... 23 more  
> Caused by: java.lang.ClassNotFoundException:  
> org.elasticsearch.transport.RemoteTransportException  
> at  
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
> 
> at  
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
> 
> at  
> org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass(ThrowableObjectInputStream.java:93)
> 
> at  
> org.elasticsearch.common.io.ThrowableObjectInputStream.readClassDescriptor(ThrowableObjectInputStream.java:67)
> 
> at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)  
> ... 28 more
> 
> --  
> You received this message because you are subscribed to the Google Groups  
> "elasticsearch" group.  
> To unsubscribe from this group and stop receiving emails from it, send an  
> email to [elasticsearch+unsubscribe@googlegroups.com](mailto:elasticsearch+unsubscribe@googlegroups.com).  
> To view this discussion on the web visit  
> [https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com](https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com)  
> [https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com?utm\_medium=email&utm\_source=footer](https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com?utm_medium=email&utm_source=footer)  
> .  
> For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

--  
You received this message because you are subscribed to the Google Groups "elasticsearch" group.  
To unsubscribe from this group and stop receiving emails from it, send an email to [elasticsearch+unsubscribe@googlegroups.com](mailto:elasticsearch+unsubscribe@googlegroups.com).  
To view this discussion on the web visit [https://groups.google.com/d/msgid/elasticsearch/CAKdsXoFrqmCV70PUab5oicBDfygO6DnFasmgJyZ3Q6PtoMCCnQ%40mail.gmail.com](https://groups.google.com/d/msgid/elasticsearch/CAKdsXoFrqmCV70PUab5oicBDfygO6DnFasmgJyZ3Q6PtoMCCnQ%40mail.gmail.com).  
For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

---

<div class="post-metadata">

**Author:** ![Earle\_Nietzel](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/earle_nietzel/32/1352_2.png) [@Earle\_Nietzel](https://discuss.elastic.co/u/Earle_Nietzel)\
**Post date:** [August 6, 2014, 3:04pm UTC](https://discuss.elastic.co/t/java-lang-classnotfoundexception-org-elasticsearch-transport-remotetransportexception/19097/3 "2014-08-06T15:04:33Z")

</div>

Hi Jörg,

I was able to resolve this by moving elasticsearch and its dependencies  
into tomcats shared/lib. Since Tomcats shared classloader is always in the  
chain of classloaders to search the ClassNotFoundException's are no more.

Though there shouldn't have been any reason for elasticsearch to not work  
in the custom ComponentLoader, this did work in the 0.90.x series. We only  
experienced these classloader issues when ES was sending shard data to  
another node in the cluster which lead me to beleive that the Netty  
Transport for some reason was not using the classloader from the original  
ImmutableSettings.

Its my guess that the ImmutableSettings object was not present which is why  
it chose to use use the Classes.getDefaultClassLoader().

Thanks for your direction was very helpful in figuring this out,  
Earle

On Tuesday, August 5, 2014 11:39:28 AM UTC-4, Jörg Prante wrote:

> The cluster wants to transport an exception to your web app container, and  
> the web app does not have access to elasticsearch jar.
> 
> You should have a look at the ES server logs, if there are any exceptions,  
> to find the real problem.
> 
> Then, after fixing the real problem, you should try to configure your web  
> app so the elasticsearch jar is in the classpath.
> 
> To your question about WebAppClassLoader: ES uses the thread context class  
> loader  
> [https://github.com/elasticsearch/elasticsearch/blob/master/src/main/java/org/elasticsearch/common/Classes.java#L56](https://github.com/elasticsearch/elasticsearch/blob/master/src/main/java/org/elasticsearch/common/Classes.java#L56)
> 
> Also, do you use any ES plugins? If plugins throw exceptions, they must  
> also be available in the web app.
> 
> Jörg
> 
> On Tue, Aug 5, 2014 at 4:57 PM, Earle Nietzel \<[earle....@gmail.com](mailto:earle....@gmail.com)  
> \<javascript:\>\> wrote:
> 
> > Using elasticsearch embedded in tomcat 7 where we have custom classloader  
> > that shares spring application beans with many webapps. The API's to these  
> > implementations are in shared but the implementations are in a separate  
> > classloader "ComponentLoader". Our search implementation is loaded from  
> > ComponentLoader where elasticsearch has been promoted as our default search  
> > engine.
> > 
> > Everything works fine on a single node but when in a cluster seeing the  
> > following ClassNotFoundException issue when shards are trying to update on  
> > other nodes.
> > 
> > Caused by: java.lang.ClassNotFoundException:  
> > org.elasticsearch.transport.RemoteTransportException  
> > at  
> > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
> > 
> > at  
> > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
> > 
> > at  
> > org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass(ThrowableObjectInputStream.java:93)
> > 
> > at  
> > org.elasticsearch.common.io.ThrowableObjectInputStream.readClassDescriptor(ThrowableObjectInputStream.java:67)
> > 
> > at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)
> > 
> > I thought this might have been related to  
> > [Rename `ElasticSearch*` to `Elasticsearch*` · Issue #4634 · elastic/elasticsearch · GitHub](https://github.com/elasticsearch/elasticsearch/issues/4634) but that  
> > doesn't seem to be the case.
> > 
> > My next idea is to look at why  
> > org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass is  
> > invoking WebappClassLoader instead of our custom ComponentLoader and coerce  
> > it to use ours.
> > 
> > But I wanted to get some opinions on this strategy as I am new to  
> > elasticsearch 😉
> > 
> > my thanks,  
> > Earle
> > 
> > Full stack trace:
> > 
> > 2014-08-05 01:25:26,685 WARN elasticsearch[app02][generic][T#1]  
> > org.elasticsearch.indices.cluster - [app02] [sakai\_index][0] failed to  
> > start shard  
> > org.elasticsearch.indices.recovery.RecoveryFailedException:  
> > [sakai\_index][0]: Recovery failed from  
> > [app01][0YtJIFeHSuehUfjjfMgv6A][ip-10-93-162-196][inet[/10.93.162.196:9300]]{local=false}  
> > into  
> > [app02][yshRulD0QjaNyu40Z6EGWQ][ip-10-7-174-145][inet[/10.7.174.145:9300]]{local=false}
> > 
> > at  
> > org.elasticsearch.indices.recovery.RecoveryTarget.doRecovery(RecoveryTarget.java:307)
> > 
> > at  
> > org.elasticsearch.indices.recovery.RecoveryTarget.access$300(RecoveryTarget.java:65)
> > 
> > at  
> > org.elasticsearch.indices.recovery.RecoveryTarget$2.run(RecoveryTarget.java:175)
> > 
> > at  
> > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > 
> > at  
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > 
> > at java.lang.Thread.run(Thread.java:745)  
> > Caused by: org.elasticsearch.transport.RemoteTransportException: Failed  
> > to deserialize exception response from stream  
> > Caused by: org.elasticsearch.transport.TransportSerializationException:  
> > Failed to deserialize exception response from stream  
> > at  
> > org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:169)
> > 
> > at  
> > org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:123)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:296)
> > 
> > at  
> > org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
> > 
> > at  
> > org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
> > 
> > at  
> > org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
> > 
> > at  
> > org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
> > 
> > at  
> > org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
> > 
> > at  
> > org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
> > 
> > at  
> > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > 
> > at  
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > 
> > at java.lang.Thread.run(Thread.java:745)  
> > Caused by: java.io.InvalidClassException: failed to read class descriptor  
> > at  
> > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1603)  
> > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)  
> > at  
> > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)  
> > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)  
> > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)  
> > at  
> > org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:167)
> > 
> > ... 23 more  
> > Caused by: java.lang.ClassNotFoundException:  
> > org.elasticsearch.transport.RemoteTransportException  
> > at  
> > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
> > 
> > at  
> > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
> > 
> > at  
> > org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass(ThrowableObjectInputStream.java:93)
> > 
> > at  
> > org.elasticsearch.common.io.ThrowableObjectInputStream.readClassDescriptor(ThrowableObjectInputStream.java:67)
> > 
> > at  
> > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)  
> > ... 28 more
> > 
> > --  
> > You received this message because you are subscribed to the Google Groups  
> > "elasticsearch" group.  
> > To unsubscribe from this group and stop receiving emails from it, send an  
> > email to [elasticsearc...@googlegroups.com](mailto:elasticsearc...@googlegroups.com) \<javascript:\>.  
> > To view this discussion on the web visit  
> > [https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com](https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com)  
> > [https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com?utm\_medium=email&utm\_source=footer](https://groups.google.com/d/msgid/elasticsearch/17542a40-7b6c-4c31-9e3e-1fdd2fe7f90b%40googlegroups.com?utm_medium=email&utm_source=footer)  
> > .  
> > For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

--  
You received this message because you are subscribed to the Google Groups "elasticsearch" group.  
To unsubscribe from this group and stop receiving emails from it, send an email to [elasticsearch+unsubscribe@googlegroups.com](mailto:elasticsearch+unsubscribe@googlegroups.com).  
To view this discussion on the web visit [https://groups.google.com/d/msgid/elasticsearch/677cb2a6-c5f8-487f-bc51-d0657e8844d7%40googlegroups.com](https://groups.google.com/d/msgid/elasticsearch/677cb2a6-c5f8-487f-bc51-d0657e8844d7%40googlegroups.com).  
For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

---

<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 6, 2017, 1:10am UTC](https://discuss.elastic.co/t/java-lang-classnotfoundexception-org-elasticsearch-transport-remotetransportexception/19097/4 "2017-07-06T01:10:26Z")

</div>


