【问题标题】:Solr new HttpSolrClient.Builder( str ) causing java.lang.NoClassDefFoundError: org/apache/http/impl/client/SystemDefaultHttpClientSolr new HttpSolrClient.Builder( str ) 导致 java.lang.NoClassDefFoundError: org/apache/http/impl/client/SystemDefaultHttpClient
【发布时间】:2017-07-12 18:47:10
【问题描述】:

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>

任何帮助将不胜感激!

【问题讨论】:

    标签: java maven solr swagger


    【解决方案1】:

    我的猜测是 Swagger 正在引入该库的早期版本。

    看起来SystemDefaultHttpClient 是从 4.​​2 版开始才存在的。

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

    【讨论】:

    • 正确!我花了一些时间来解决这个问题,但这正是你在回复中提到的。谢谢!
    猜你喜欢
    • 2014-10-06
    • 2015-11-13
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多