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/