天天看點

eclipse java 源代碼_Eclipse java調試:找不到源代碼

問題

在eclipse中調試java應用程式時,我在兩種情況下收到"Source not found"錯誤:

單步執行已導入的其他項目中的檔案

插入已安裝的maven存儲庫中的檔案

檔案在那裡,但是eclipse不會進入它們,而是顯示一個按鈕"attach source"

我嘗試附加(打開一個對話框來定義變量?!),eclipse确實跳轉到檔案,但調試器無法檢查那裡的任何變量。另外,為每個依賴項手動附加源是不實際的,因為在我的情況下有數千個依賴項檔案。

我是新的toeclipse \ javaso解釋為什麼會發生這種情況如何解決這個問題會有很大幫助!

#1 熱門回答(232 贊)

配置Eclipse IDE隻需3個步驟:

注意:更新源查找路徑後,你必須停止并重新啟動調試會話。否則,具有缺失源的檔案将繼續顯示"缺少源"。

編輯源查找選擇編輯源查找...指令[編輯源查找]以打開源路徑對話框,該對話框允許你更改所選調試目标的源查找路徑。

eclipse java 源代碼_Eclipse java調試:找不到源代碼
eclipse java 源代碼_Eclipse java調試:找不到源代碼
eclipse java 源代碼_Eclipse java調試:找不到源代碼

IMPORTANT在最後一步之後重新啟動Eclipse。

#2 熱門回答(42 贊)

症狀完美地描述了找到的類沒有關聯(或配置設定)源的情況。

你可以在Preferences> Java> Installed JRE中關聯JDK類的源。如果JRE(不是JDK)被檢測為要使用的預設JRE,那麼你的JDK類将沒有附加的源。請注意,并非所有JDK類都提供了源,其中一些僅以二進制形式分發。

手動添加的項目建構路徑中的類要求你手動附加關聯的源。源可以駐留在zip或jar檔案中,工作區中或檔案系統中。 Eclipse将掃描zip,例如,你的源不必位于存檔檔案的根目錄中。

來自其他插件(maven,PDE等)的依賴項的類。在這種情況下,由插件決定如何提供源。 PDE将要求每個插件都有相應的XXX.source包,其中包含插件的源代碼。可在此處和此處找到更多資訊。如果可用,m2eclipse可以擷取Maven依賴項的源和javadoc。這個功能應該啟用m2eclipse首選項(該選項被命名為"Download source and javadocs"。對于其他插件,你需要查閱他們的文檔

從項目加載的類将自動與項目中的源比對。

但是,如果Eclipse仍然建議你附加源代碼,即使我正确設定了我的類及其來源,該怎麼辦:

這幾乎總是意味着Eclipse從不同的地方找到了比你想象的更多的類。檢查源查找路徑以檢視它可能在哪裡獲得錯誤的類。根據你的發現更新路徑。

當遇到斷點時,Eclipse根本找不到任何東西:

當你的源查找路徑不包含目前在運作時加載的類時,會發生這種情況。即使類在工作空​​間中,它也可以對啟動配置不可見,因為Eclipse嚴格遵循源查找路徑并僅附加目前已調試的項目的依賴項。

一個例外是PDE中的調試包。在這種情況下,由于運作時由多個項目組成,這些項目不必互相聲明依賴項,是以Eclipse将自動在工作空間中查找該類,即使它在源查找路徑中不可用。

我點選斷點時看不到變量,或者隻是打開源,但是沒有選擇斷點線:

這意味着在運作時中,JVM或類本身沒有必要的調試資訊。每次編譯類時,都可以附加調試資訊。為了減少類的存儲空間,有時會省略此資訊,這使得調試此類代碼變得很麻煩。你唯一的機會是嘗試在啟用調試的情況下重新編譯。

Eclipse源檢視器顯示的行不同于實際執行的行:

它有時可以顯示也執行空白空間。這意味着你的源與類的運作時版本不比對。即使你認為這是不可能的,也是如此,是以請確定設定正确的來源。或者你的運作時比對你的最新更改,具體取決于你要執行的操作。

#3 熱門回答(41 贊)

Eclipse調試與程式實際加載的一起工作。

你描述的症狀聽起來像是在項目中找不到的類,但是在你正在使用的項目之前沒有找到調試資訊的分發jar中。

出現這種情況有幾個原因,但要檢視找到顯示此行為的類的位置(在導航窗格中查找以識别它)。你很可能需要更改項目的建構路徑以避免使用此jar并讓JVM使用該項目。

編輯:請注意,從2018年開始,通常使用像Maven這樣的建構架構,其中建構路徑由m2e插件管理,是以這個問題應該比問題時更頻繁。