1. 程式人生 > >solr原始碼通過idea進行本地除錯

solr原始碼通過idea進行本地除錯

試驗環境:

solr5.3(和線上保持一致,歷史功能,所以版本比較舊)

jdk1.8

idea2018版

ant1.9版本

solr原始碼地址:http://archive.apache.org/dist/lucene/solr/ ,記得下載原始碼 

solr-5.3.1-src.tgz

因為原始碼預設結構試驗的ant,所以需要先安裝ant1.9,http://ant.apache.org/bindownload.cgi

配置ant的環境變數,同java,因為環境比較基礎對於開發人員應該比較簡單,所以不過多記錄了

原始碼目錄結構:

第一步:專案轉為idea結構

cd 到 solr的根目錄,執行以下命令

ant ivy-bootstrap  //安裝ivy
cd solr
ant server
cd ..
ant idea

說明:ant類似maven,有時候網路不好會卡住或者失敗,重新執行就好了,這一步死活過不去的話,可以百度一下,我是2次成功的

然後idea,開啟根目錄(刪除本分,為其它測試引入,請忽略)

第二步:debug模式啟動solr(強烈建議,通過  根目錄/solr/bin 中的 solr --help 看一下都支援什麼)

cd solr/bin

solr -f -a  "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18984" -port 8984

說明:address 為debug 除錯介面   ,-port 為solr的訪問介面

這時候訪問solr,http://localhost:8984/solr,需要新增Core,會的跳過,不會的百度...很簡單或者用我下面吐槽的辦法

注意:這裡可能會報錯,根據錯誤提示建立檔案(從demo裡面copy),只是測試的話可以參考吐槽部分

以下部分純屬吐槽(記錄自己的一次測試,和主流程無關),經驗豐富,可以跳過

-------------------------------------------------------------------------------------------

上面主流程沒有core,需要新建,可能會遇到一些問題,可以根據提示解決,後來為了測試solr的一些命令做了一個小測試

因為我只是做實驗所以匯入了一份測試資料 通過solr -f -e dih ,會生成一些測試資料

這時候可以關閉solr了,因為這次操作是為了生存測試core,這裡被坑了一次 -e dih 無法開啟除錯模式(也許是自己測試問題)

solr stop -p 8984 

這時候測試 core已經有了,再開啟debug 模式,這時候會用到上面命令提示的-s 的路徑

solr -f -a  "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18984" -port 8984    -s "E:\idea_workspace\solr-5.3.1\solr\example\example-DIH\solr"

吐槽結束,迴歸正途

------------------------------------------------------------------------------------

第三步:通過idea 進行remote debug

說明:遠端除錯,握手失敗

Error running Debugger: Unable to open debugger port (localhost:8983):  java.io.IOException "handshake failed - connection prematurally closed"

原因:1.防火牆關閉(沒測)  2.檢查你的solr 命令中的引數,主要a 後面那部分,有些網上的資料也的不太準確,你記得自己 solr --help 看下例子

成功的截圖:

第四步:前面都成功的話,開始任意的打斷點,擼程式碼吧

成功進入斷點

致此完成,還有問題歡迎加群討論學習

qq群:208779755


附學習:solr 常用命令引數截圖