標籤:debug source not found source jar maven jar version
用Eclispe進行Debug時一直被一個問題所困擾:Source not found.
問題產生的原因是調試進入了一個沒有源碼的jar包裡。
簡短說明:
Edit Source Lookup Path… 可以解決Debug過程中找不到源碼的問題,PS,需要重啟服務。
Configure Build Path 中可以給jarattach上源碼,這個管的是閱讀代碼時可以看到jar包裡的內容。
具體步驟:
之前通過點擊Edit Source Lookup Path … 來加進源碼搜尋路徑
但經常遇到的問題是加入後一點OK,介面閃一下,就又回到這個’Source not found’介面了。
今天因為一定要調試源碼裡的東西,所以徹底搞了一下這個問題。
我的環境是: + Maven 3.2.1
首先把源碼工程down下來,並且手動打了source.jar,如果不願意打source.jar,也可以直接引目錄,先進入src/main/java目錄下,與com包在同一級目錄下,然後執行命令:
將產生好的xxx-source.jar剪下粘貼到外部的一個目錄裡。然後在Edit Source Lookup Path … 裡Add … -> ExternalArchive
選擇你要加要xxx-source.jar
這時介面會出現一閃,然後又回到’Edit Source Lookup Path …’這個介面的情況,其實,關閉服務重啟一下就好了,我一直不明白為什麼,又是重新加,又是想辦法加別的jar或工程,最後搞亂了。
如果加了不該加的Lookup Path,可以點菜單Run -> Debug Configurations … -> Source 來管理LookupPath
下面是一個複雜的例子:
用Maven管理大規模jar包集和項目集時,經常遇到引入多個jar包的版本的問題,例如當前有三個工程,P1引用P2,P2引用P3,P2依賴了A-1.0.jar,P3依賴了A-2.0.jar。根據Maven選擇jar包,先顯式,再深度,後順序的原則,A-1.0.jar最終被終會被工程所依賴,因此,在Configure Build Path時,要把1.0的源碼包attach給這個jar,在debug時Edit Source Lookup Path… 時也要把1.0的源碼包選中,我在實驗時就是把2.0的源碼包編給了Lookup Path,然後在Configure Build Path時無論把哪個包attach上,都在debug時發生了行位移。
所以,Configure Build Path和Edit Source Lookup Path是兩回事,一個管閱讀代碼,一個管調試代碼,但對於那種入口代碼,也就是前面沒有代碼調它,而是容器調用的代碼,一定要先閱讀到它,才能打上斷點啊,不是嗎?