Solr new HttpSolrClient.Builder(str)导致java.lang.NoClassDefFoundError:org / apache / http / impl / client / SystemDefaultHttpClient

时间:2017-07-12 18:47:10

标签: java maven solr swagger

与Sorl有问题。当试图运行以下代码行时:

HttpSolrClient solr = new HttpSolrClient.Builder( "http://localhost:8983/solr/core" ).build();

我收到以下错误: 引起:java.lang.NoClassDefFoundError:

org/apache/http/impl/client/SystemDefaultHttpClient
    at org.apache.solr.client.solrj.impl.HttpSolrClient.<init>(HttpSolrClient.java:211)
    at org.apache.solr.client.solrj.impl.HttpSolrClient.<init>(HttpSolrClient.java:228)
    at org.apache.solr.client.solrj.impl.HttpSolrClient$Builder.build(HttpSolrClient.java:890)

我在几篇帖子中读到,这可能是Maven的依赖问题,因为Swagger和Sorl都使用httpClient。我将依赖项移到了同一个pom中,并在dependencymanagement标记中包含了依赖项。

执行此操作后,我运行了命令:mvn dependency:tree -Dverbose

查看树,很明显删除了重复的依赖项。但是,我仍然得到同样的错误。

使用:

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>6.6.0</version>
</dependency>

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

我的猜测是,Swagger正在推进该库的早期版本。

看起来SystemDefaultHttpClient自版本4.2以来才存在。

mvn dependency:tree -Dverbose在两种情况下都显示相同版本的http客户端吗?