第一次使用 SolrJ5.0 的各種小問題
.
這次的需求是要將某一個系統上既有的文件資料發布到一個 Solr Server 上,
讓使用者可以簡單地進行搜尋,
.
因為要將文章發佈到 Server 上,
所以想先透過一個簡單的專案以 Main 去測試發布的功能,
.
沒想到我只寫了下面這一行 code 就遇到奇怪的問題:
.
HttpSolrServer server = new HttpSolrServer(WISE_SERVER_URL);
.
java.lang.UnsupportedClassVersionError: test/MainEntry : Unsupported major.minor version 51.0
搜尋一下發現應該是 JRE 版本不符合, 於是馬上改了 eclipse 上的 jre 設定 --> JRE1.7
.
.
改完, 緊接著發生另一個問題:
同樣只有這行new HttpSolrServer(WISE_SERVER_URL)
:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/NoHttpResponseException
..
前輩建議我先將這個 main 程式直接擺到運行 Solr Server 的專案底下試試,
沒想到居然可以運作了, 而且將 SolrInputDocument
可以丟到 Solr Server 上,
且 Server 可以正確進行索引及搜尋.
.
(我一開始以為這是改了 1.7 之後, JRE 不支援所產生的錯誤訊息...)
.
那麼應該就是環境的問題了!
.
所以首先將 WEB-INF/lib 底下的 Library 通通複製到新開的專案試試,
之後參考舊版的 SolrJ 所需的 jar 一個一個檢查哪一個是必要的.
.
沒錯, 問題是缺少了 HttpClient 的幾個相關的 Library,
最後專案裡是包含下面這幾個 jar
..
1. commons-codec-1.7.jar
2. commons-io-2.1.jar
3. httpclient-4.2.3.jar
4. httpcore-4.2.2.jar
5. httpmime-4.2.3.jar
6. jcl-over-slf4j-1.6.6.jar
7. log4j-1.2.17.jar
8. slf4j-api-1.6.6.jar
9. slf4j-log4j12-1.6.6.jar
10. solr-solrj-5.0-SNAPSHOT.jar
11. noggit-0.5.jar
..
但...
這次雖然 Main 是可以跑了, 但將 SolrInputDocument
commit()
到 Server 就丟了錯誤訊息回來,
.
Server at http://127.0.0.1:8090/wise/wiseadm/core0 returned non ok status:500, message:Server Error
..
由於目前程式是可以運作, 只是 Server 會丟錯誤訊息回來...
所以暫時先這樣, 不過遲早要解決...或許哪天就這樣爆炸了!!