2014-02-19 163 views
9

我知道這個問題已經被問過很多次了,但是沒有一個建議的解決方案可以解決我的問題(或者我沒有正確實現它們)。Eclipse - Source not found

我正在開發OpenFire的插件,當我在插件源中設置斷點時,Eclipse報告「找不到源」。 JAR與OpenFire服務器的構建分開構建。我已經嘗試添加JAR並指定源代碼目錄,但沒有骰子。當我打斷點時,點擊「編輯源查找路徑」,單擊「添加」,Java庫,用戶庫,單擊用戶庫,添加我的庫(同時嘗試「添加JAR「和」添加外部JAR「),然後指定包含源代碼的文件夾。我也試過:

  • 通過選擇「文件系統目錄」,而不是「Java庫」
  • 通過選擇「工作區文件夾」
  • 在Project Explorer中添加它添加源添加源我的插件Java構建路徑
  • 在Project Explorer,加入我的JAR作爲庫和指定源附件

在此先感謝您的任何建議。

+0

當你點擊斷點時,Eclipse可能會顯示一個.class文件。你可以附加源代碼目錄(假設你已經將源代碼導入爲另一個eclipse項目)。 – bsd

回答

3

事實證明,解決方案是非常有效的。當Balder的建議不起作用時,我嘗試調試一個股票OpenFire插件,它工作得很好。然後我從頭開始創建一個新的插件,除了將源代碼添加到項目(右鍵單擊項目 - >新建 - >源文件夾)之外,它什麼都不做,它也工作得很好。我不知道爲什麼Eclipse拒絕爲我的原始插件查看源代碼,但是我將所有代碼和庫移到了新插件中,並且調試按預期工作。

+0

+10爲單詞'anticlimactic' – ACV

9

就我個人而言,我在Eclipse JDT中沒有很好的經驗,當它打到一個斷點時添加一個源文件夾。我總是喜歡做的,是將源文件夾調試前:

  1. 選擇項目/屬性/庫
  2. 選擇庫和「編輯...」的source attachment
  3. 選擇相應的源代碼文件夾或含包裝

之後,拉鍊/罐,你應該能夠打開源文件在虛擬的「引用的庫」文件夾(正下方的「JRE系統庫」文件夾i。在項目之前),或者從JDT編輯器中打開對鏈接類文件的引用。如果您能夠訪問源代碼,那麼您至少應該能夠在中斷點停留並查看相應的源代碼。

否則,如果源文件夾真的有效,則必須再次檢查:源文件夾或源歸檔文件必須包含具有該庫的根包名稱的文件夾(例如,默認的Java「src.zip 「JDK文件夾內部的根部還包含一個相應的」java「文件夾)。如果有疑問,解壓檔案並選擇您感興趣的軟件包的父文件夾 - 有時源檔案可能會混亂或與JDT不兼容。

如果這已得到保證,它仍然無法正常工作,則可能是您的鏈接源文件夾與編譯的庫版本不對應。通常,JDT會很好地處理這些不一致的情況,但是如果您嘗試打開源文件,這與相應的類文件完全不同,則會遇到問題。在這種情況下,我會建議下載正確的源版本的庫,或重新編譯源庫,如果一切都失敗。

如果使用JDT編輯器打開引用的源文件確實無法正常工作,並且在調試過程中輸入斷點時仍無法打開源文件,那麼很可能類文件是相應源的missing the line numbers文件。同樣,在這種情況下,您將不得不從源重新編譯庫。

最後,還可以通過在啓動配置的源選項卡中指定源文件夾或存檔來覆蓋默認源查找。但是,當你的構建路徑配置正確時,你通常不需要這樣做。從Eclipse Help

「源」選項卡定義調試Java應用程序時用於顯示源的源文件的位置。默認情況下,這些設置是從關聯項目的構建路徑派生的。您可以在這裏覆蓋這些設置。

+0

優秀的迴應。雖然這些建議沒有解決我的問題,但它幫助我理解Eclipse在這方面的工作原理。 – stdout

4

我有這個非常惱人的問題很長一段時間,但終於能夠解決它。在我的情況下,Java的Transformer.IsRuntimeCode(ProtectionDomain)函數中有一個空指針異常被拋出。

由於異常被捕獲和處理,我並不需要知道這一點,但每次發生這種情況時eclipse都會暫停調試,並告訴我源代碼不可用。結果,我經常不得不一直按下按鈕繼續執行代碼。

爲了防止這種情況發生,我:

1. Clicked on the "Breakpoints" window at the bottom of the debugging 
    screen 
2. Right clicked "NullPointerException" 
3. Unchecked "Caught" 

這從抓NullPointerException.alt文本

alt text http://www.SharpDetail.com/p/so_breakpoint.gif

期間暫停程序流程防止調試器,這一個又一個的:

Eclipse不會崩潰。你正試圖進入一個方法,eclipse不知道在哪裏找到源文件(* .java)並告訴你這個。這裏是如何告訴月食在哪裏看。轉到

Window->Preferences->Java->Installed JREs,select the JRE you are using and click Edit. 

在這裏,選擇在你看到列表中的所有jar文件,並按一下源代碼連接....

在顯示的窗口中,選擇並祝src.zip,這位於您的JDK文件夾中(如果您在安裝JDK時沒有取消選中它)。在機器我在現在,也就是

C:\Program Files\Java\jdk1.7.0_07\src.zip. 

保存所有的變化(可能重新啓動Eclipse),您將不會再看到這個錯誤。

0

很多時候,當您下載二進制版本的應用程序時,您會將eclipse IDE中的jar文件作爲引用庫。通常通過配置構建路徑來完成。但是二進制文件沒有源文件。您有二進制版本和應用程序的源版本。

一個簡單的方法是下載,你也可以使用Maven構建項目的源代碼庫。 保持有些東西,可能在你的項目工作區內。

趁現在看到的類文件(從日食,罐子爆炸),你可能看到源沒有發現,罰款....下面有個按鈕,點擊這個,一個新窗口中打開並有選擇添加外部文件夾。上面說

它引用到你下載的源(不是二進制的)的src文件夾和地方保存,它會顯示從該類細節。

相關問題