ClassNotFoundException HttpRequestInterceptor

myr*_*yro 7 java

我在这一行得到了这个奇怪的例外:

HttpSolrServer server = new  HttpSolrServer("http://localhost:8080/solr/");
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpRequestInterceptor
    at com.polgar.dipl.index.SolrIndex.init(SolrIndex.java:36)
    at com.polgar.dipl.index.SolrIndex.getInstance(SolrIndex.java:30)
    at com.polgar.dipl.main.ArticleIndexer.main(ArticleIndexer.java:44)
Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpRequestInterceptor
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 3 more
Run Code Online (Sandbox Code Playgroud)

Tho*_*ing 19

得到同样的问题.我们俩都必须玩Solr 3.6

我不得不从HttpComponents项目下载HttpClient jar.它们似乎没有包含在Solr 3.6中

http://hc.apache.org/downloads.cgi

3.6有一个新版本的客户端使用新的HttpComponents(4.0)的东西,而不是旧的HttpClient(3.1)的东西.旧的3.1罐子在那里,但不是新罐子.

一旦我复制了罐子,就可以了.

我复制了以下内容(并非所有可能都需要).

httpclient-4.1.3.jar
httpclient-cache-4.1.3.jar
httpcore-4.1.4.jar
httpmime-4.1.3.jar
Run Code Online (Sandbox Code Playgroud)

现在对我有用.


小智 10

如果您使用Maven包含SOLRJ,您还需要在POM中使用以下短语:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.2.1</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>4.2.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)