# java.lang.NoClassDefFoundError: org/elasticsearch/common/transport/TransportAddress

**URL:** <https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516>\
**Category:** Elasticsearch\
**Created:** [October 11, 2017, 9:10am UTC](https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516 "2017-10-11T09:10:27Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Canappeco](https://avatars.discourse-cdn.com/v4/letter/c/5fc32e/32.png) [@Canappeco](https://discuss.elastic.co/u/Canappeco)\
**Post date:** [October 11, 2017, 9:10am UTC](https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516/1 "2017-10-11T09:10:27Z")

</div>

I am using `mvn package` to build a jar and want to run the main function in the jar. `mvn package` is successful, but when I run `java -classpath ./target/socket-server-1.0-SNAPSHOT.jar cn.zmhappy.es.Demo`, something bad happened as follow:

```auto
Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/common/transport/TransportAddress
        at cn.zmhappy.es.Demo.main(Server.java:52)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.common.transport.TransportAddress
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more

```

my pom.xml:

```auto
<dependencies>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>5.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.3.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20160810</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency>
</dependencies>

```

I try to search in `~/.m2/repository/org/elasticsearch/`, but I can't find `common` under this directory. Besides, the application can run successfully locally. I wonder how to deal with this problem.

**Elasticsearch version** (`bin/elasticsearch --version`): 5.3.0  
**JVM version** (`java -version`): 1.8.0\_144

---

<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:** [October 11, 2017, 9:42am UTC](https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516/2 "2017-10-11T09:42:30Z")

</div>

When you run `java -classpath ./target/socket-server-1.0-SNAPSHOT.jar` you are just passing your own code but you are not adding on the classpath any of the dependencies (and sub dependencies).

You need to add them all or create a flatjar which contains all that.

With Maven you can do the later like this:

> <https://github.com/dadoonet/fscrawler/blob/master/pom.xml#L267-L286>

And this:

> <https://github.com/dadoonet/fscrawler/blob/master/src/main/assembly/assembly.xml>

Hope this helps

---

<div class="post-metadata">

**Author:** ![Canappeco](https://avatars.discourse-cdn.com/v4/letter/c/5fc32e/32.png) [@Canappeco](https://discuss.elastic.co/u/Canappeco)\
**Post date:** [October 11, 2017, 12:22pm UTC](https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516/3 "2017-10-11T12:22:57Z")

</div>

Thanks for your help! I follow your advice and add plugin in my pom.xml, but now there is another problem as follow:

```auto
Exception in thread "main" java.lang.ExceptionInInitializerError
	at org.elasticsearch.common.logging.DeprecationLogger.<clinit>(DeprecationLogger.java:138)
	at org.elasticsearch.common.xcontent.support.AbstractXContentParser.<init>(AbstractXContentParser.java:57)
	at org.elasticsearch.common.xcontent.json.JsonXContentParser.<init>(JsonXContentParser.java:44)
	at org.elasticsearch.common.xcontent.json.JsonXContent.createParser(JsonXContent.java:103)
	at org.elasticsearch.common.settings.Setting.parseableStringToList(Setting.java:832)
	at org.elasticsearch.common.settings.Setting.lambda$listSetting$27(Setting.java:786)
	at org.elasticsearch.common.settings.Setting.listSetting(Setting.java:791)
	at org.elasticsearch.common.settings.Setting.listSetting(Setting.java:786)
	at org.elasticsearch.common.network.NetworkService.<clinit>(NetworkService.java:50)
	at org.elasticsearch.client.transport.TransportClient.newPluginService(TransportClient.java:98)
	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 cn.zmhappy.es.Demo.main(CheckFunc.java:37)
Caused by: java.lang.IllegalStateException: Error finding the build shortHash. Stopping Elasticsearch now so it doesn't run in subtly broken ways. This is likely a build bug.
	at org.elasticsearch.Build.<clinit>(Build.java:62)
	... 16 more

```

I have no idea about this. Can you give me some help? Thanks!

---

<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:** [October 11, 2017, 1:24pm UTC](https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516/4 "2017-10-11T13:24:37Z")

</div>

No idea. Never saw that. Could you share your code?

BTW you should better use the Rest client as the Transport one will be deprecated at some point.

---

<div class="post-metadata">

**Author:** ![Canappeco](https://avatars.discourse-cdn.com/v4/letter/c/5fc32e/32.png) [@Canappeco](https://discuss.elastic.co/u/Canappeco)\
**Post date:** [October 11, 2017, 3:41pm UTC](https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516/5 "2017-10-11T15:41:20Z")

</div>

My demo is totally the same as that in elasticsearch doc. It is just a simple demo.  
I finally solve this problem by changing my dependency version from 5.3.0 to 5.5.2 as follow:

```auto
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>5.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.5.2</version>
        </dependency>

```

I wonder if es is downward compatible? At present I didn't find the disadvantage.

---

<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:** [October 11, 2017, 4:16pm UTC](https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516/6 "2017-10-11T16:16:26Z")

</div>

Ha! You need to use the same version on both sides.

Rest Client is much more tolerant.

---

<div class="post-metadata">

**Author:** ![Canappeco](https://avatars.discourse-cdn.com/v4/letter/c/5fc32e/32.png) [@Canappeco](https://discuss.elastic.co/u/Canappeco)\
**Post date:** [October 12, 2017, 3:13am UTC](https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516/7 "2017-10-12T03:13:03Z")

</div>

Thanks for your help, I will try to update my code by using Rest Client. Thanks again.

---

<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:** [November 9, 2017, 3:13am UTC](https://discuss.elastic.co/t/java-lang-noclassdeffounderror-org-elasticsearch-common-transport-transportaddress/103516/8 "2017-11-09T03:13:09Z")

</div>

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