前言
忍不住吐槽,找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目录),然后再运行一下试试。。。
写的不好,回头再补充修改,希望对你有帮助,有问题留言交流。。