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

标签 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>

如有任何帮助,我们将不胜感激!

最佳答案

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

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

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

关于java - Solr new HttpSolrClient.Builder( str ) 导致 java.lang.NoClassDefFoundError : org/apache/http/impl/client/SystemDefaultHttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45065413/

相关文章:

Solr 不搜索(非常基本的例子)

java - 如何更新 Eclipse RCP 应用程序?

java - 在 Spring Boot 执行器信息端点中显示构建时间戳

java - Jacoco exec 文件总是出现 EOFException

java - 方言 SQLite 3 与 Hibernate 5 的问题

java - 如何使用 Apache Solr 处理不同的 UTF-8 规范化?

Solr:如何仅突出显示整个搜索词组?

java - 从 JTextArea 获取完整的更改历史记录

c# - 在 C# 中锁定静态方法

Java:同时从不同的 ArrayLists 中删除两个对象