2013-01-21 28 views
2

我是Solr和maven的新手,我想創建一個小型應用程序,通過SolrJ索引我所有的數據庫表。
爲此,我擡頭看着這個tutorial他們在哪裏使用MAVEN。
我安裝了librairies和罐子(除Maven的),但我有這個例外:SolrJ與Maven

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpRequestInterceptor 

我看着教程和我看到解決這個問題,我們需要把它添加到我的Maven配置:

org.slf4j slf4j-simple 1.5.6

反正有沒有maven做到這一點? 謝謝

+1

你是什麼意思你安裝了庫和罐子**除了** Maven?你在使用Maven嗎? –

+1

設置Maven構建的另一種方法是使用Groovy。它還能夠使用Grape「Grab」註釋自動下拉它的依賴關係。請參閱:http://stackoverflow.com/questions/8839331/parse-solr-xml-files-to-solrinputdocument/8888386#8888386 –

+0

@ MarkO'Connor不,我不使用maven – Bourkadi

回答

0

Maven是Solrj的建議構建技術,因爲它可以自動管理第三方依賴關係。如果沒有依賴管理,破譯這些關係是一件極其痛苦的事情(Jar hell)。

我可以建議的是使用常春藤,它有一個command-line mode

首先下載常春藤罐子

檢索以下的Maven模塊和所有它的依賴:

<dependency> 
      <artifactId>solr-solrj</artifactId> 
      <groupId>org.apache.solr</groupId> 
      <version>1.4.0</version> 
      <type>jar</type> 
      <scope>compile</scope> 
    </dependency> 

然後運行它,如下所示:

java -jar ivy.jar \ 
     -dependency org.apache.solr solr-solrj 1.4.0 \ 
     -retrieve "lib/[artifact]-[revision](-[classifier]).[ext]" \ 
     -confs default 

檢索到lib目錄:

lib/commons-httpclient-3.1.jar 
lib/wstx-asl-3.2.7.jar 
lib/slf4j-api-1.5.5.jar 
lib/commons-codec-1.3.jar 
lib/stax-api-1.0.1.jar 
lib/geronimo-stax-api_1.0_spec-1.0.1.jar 
lib/commons-logging-1.0.4.jar 
lib/solr-solrj-1.4.0.jar 
lib/commons-io-1.4.jar 
lib/commons-fileupload-1.2.1.jar 

更新

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpRequestInterceptor 

這是由於缺少httpcore.jar文件。我發現了這一點,通過瀏覽Maven的中央:

上使用「SLF4J-簡單」的建議是提供情況的應用程序沒有一個日誌實現。

終於...這說明了我試圖說的。在沒有依賴管理工具(ivy,groovy,Maven)的情況下,您可以獨自解密第三方jar依賴項。

+0

謝謝你,我會測試它,並告訴你發生了什麼 – Bourkadi

+0

在另一個術語:我可以使用solrj沒有安裝maven?我可以自己管理我的罐子,因爲我不習慣使用maven – Bourkadi

+1

@mohammedaminebourkadi Solrj是一個Java庫。當然你可以自己管理罐子。問題在於你想知道Maven如何管理jar之間的依賴關係。我在答案中提供的是一種自動執行jar下載的機制(節省時間並保持血壓低) –

2

使用maven。即使有了它,也需要相當長的時間才能正確地獲得依賴關係。教程都有點缺乏。下面是我帶有相關依賴項的pom.xml文件,這些依賴文件可能會幫助你。

<dependency> 
    <groupId>org.apache.solr</groupId> 
    <artifactId>solr-core</artifactId> 
    <version>4.3.0</version> 
</dependency> 
<dependency> 
    <artifactId>solr-solrj</artifactId> 
    <groupId>org.apache.solr</groupId> 
    <version>4.3.0</version> 
    <type>jar</type> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.1.1</version> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
</dependency> 
+0

哇,爲什麼commons-logging需要明確添加,而不是發現依賴關係超出了我的想象。但是這解決了我的問題。謝謝! – Brandon

+0

爲什麼我們需要添加solr-core依賴項,它不僅適用於solr-sorlj – userab