2009-05-06 79 views
7

我正在使用Eclipse 3.4.2來開發我的代碼。作爲我的項目定義的一部分,我參考了一個附加源代碼的實用程序庫。到目前爲止,這麼好 - 當我從庫中調出類並且正在調試的時候,我可以看到這個源代碼。Eclipse:是否可以編輯通過源代碼「附件」知道的Java源碼

但現在我想對其中一個類進行更改,同時仍保留Eclipse Java編輯器的所有功能(特別是工具提示和快速修復)。當我查看源代碼時,這些功能似乎可行(我可以按CTRL + LClick通過方法名稱),但它是隻讀的。另一方面,我可以明確地打開源文件,這將允許我編輯它,但是我失去了所有「智能」編輯功能。

我最近從IntelliJ切換到了Eclipse,這是可能的,所以我希望它也是在Eclipse中。請注意,雖然我可以簡單地將代碼作爲項目包含在工作區中,但我真的不想。工作區已經很大,我不想通過添加我很少碰到的項目來進一步減慢Eclipse的速度。

回答

7

我不確定我的問題是否正確。將預編譯庫添加到項目構建路徑(JAR)並將源附加到此JAR時,Eclipse將在您單擊JAR內的.class時向您顯示源代碼。調試器也是如此,如果JAR中的類是使用行號信息編譯的,那麼它也允許您單步執行源代碼行。

現在你似乎想要做的就是修改JAR中的類(源視圖只是一個覆蓋層,如果你附加不同版本的源代碼,它甚至可以關閉),這是不可能的,因爲它們以二進制形式封裝在JAR存檔中 - 即使Eclipse足夠聰明以單獨顯示它們。

我想你會希望你的改變被調試器熱插入正在運行的程序中。這隻能在完成更改後通過重新編譯完成。通常,Eclipse會在保存Java源文件時自動執行此操作。因爲您的源文件不是工作區的一部分(或者顯式聲明爲Java源的外部文件夾) - 它不會執行重新編譯和交換。

我建議在Eclipse中將外部庫的源代碼作爲項目包含進來,而不要擔心性能太高 - 我每天使用3.4.2,並且我的工作區有大約45個打開的項目,其中有幾個10.000類,數百萬行代碼。我爲Eclipse VM分配了一個千兆字節的RAM,並且在Core2Duo 2.6GHz機器上沒有問題。

+0

這並不是說我期望Eclipse在我運行系統時對系統進行的任何更改進行「熱插拔」。我告訴Eclipse從該JAR中獲得類的「內置」形式,我期望它能夠做到這一點(就像它那樣)。如果我決定需要編輯一些我偶然以二進制形式包含的類,它實際上只是一個Java編輯器提供的所有「幫助」的問題。儘管我們知道大小限制 - 我們的代碼庫基本相同,它會扼殺IntelliJ。 – sfitts 2009-05-06 17:31:47

相關問題