Linux 运行jar包时提示:java.lang.NoClassDefFoundError:XXX

前言

忍不住吐槽,找jar包找的好辛苦啊,跪求各路大神指点一条在服务器上编译Java的捷径。。。

问题:

在服务器上用maven编译运行java项目,在pom.xml配置无误(依赖项都添加)的前提下,使用java -cp 命令运行时总是提示类似如下的问题:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/impl/nio/client/HttpAsyncClientBuilder
        at org.elasticsearch.client.RestClientBuilder.createHttpClient(RestClientBuilder.java:196)
        at org.elasticsearch.client.RestClientBuilder.build(RestClientBuilder.java:180)
        at com.dw.App.main(App.java:57)
Caused by: java.lang.ClassNotFoundException: org.apache.http.impl.nio.client.HttpAsyncClientBuilder
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

网上的解决方案大多说是pom.xml依赖项的问题,也有说用xboost的,试过发现都不行。索性就手动一个一个把缺失路径的jar包添加进来:

步骤

–首先
找到缺失的jar包,一般如果pom.xml依赖项没问题的话,jar包应该在/root/.m2/repository/org/apache等目录下,所以直接搜吧

find / -name '*jar'

这个效率太低,你可以现在网上找这个jar包的目录缩小范围搜,然后可以这样:

find /root/.m2/repository/org/apache  -name 'http*jar'

不过你也可以直接在网上下载相应的jar包

–然后

cp  XXXXXXX.jar  【你的java-home路径】/jre/lib/ext

将这个jar包复制到这个目录就行了(这里其实是你的JAVA-HOME下的lib/ext目录),然后再运行一下试试。。。

写的不好,回头再补充修改,希望对你有帮助,有问题留言交流。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值