2013-10-03 48 views
3

我編寫了一個Eclipse插件,在任何文件或文件夾(例如,在導航器視圖中)上顯示右鍵單擊菜單選項。對於選定的每個文件(以及選定目錄內的每個文件),該插件會計算並顯示文件的MD5,SHA-1,SHA-256,SHA-384或SHA-512散列。當我在開發過程中進行調試時,該插件完美工作。Eclipse插件在調試時工作,但在安裝時不起作用

如果我使用site.xml的網站,把它放在我的服務器上,然後安裝到Eclipse(它安裝得很好),我看到菜單。我可以計算並顯示所選文件的散列,但僅對不適用於所選文件夾的。代碼中絕對沒有任何改變;它總是以調試模式工作,並且在我安裝它時永遠不會工作。

我的問題是:我該如何調試?起初,我認爲Eclipse的workspace/.metadata/.log文件會提供一些線索,但不會輸出錯誤。我甚至試圖添加一些代碼,將文件寫入桌面,但該文件永遠不會被創建。有沒有人有任何線索發生了什麼事情,或者我應該如何解決這個問題?我從來沒有過這麼難的時間調試!

作爲參考,https://github.com/gfairchild/eclipse-hasher是該項目。所有的源代碼都可以在那裏看到(它可以作爲Eclipse項目導入)。


答案最終涉及兩兩件事:

  1. 我並沒有包括在生成過程中lib目錄。我使用的依賴項(Apache Commons Codec)未包含在內,因此它當然不會運行。
  2. 在測試過程中,我曾嘗試手動將構建的Hasher插入到eclipse/plugins中。我錯誤地認爲,如果我通過Eclipse界面卸載了Hasher,該文件將被刪除。事實並非如此。所以在上個月,我有一箇舊版本的Hasher被加載到Eclipse中。這令人難以置信的令人沮喪。好吧。學過的知識。

非常感謝大家提供的幫助!

+0

我剛剛在Eclipse Kepler上測試了你的項目,它工作正常(在IDE和導出時都是如此)。順便說一句,你的項目缺少MANIFEST.MF(需要運行/導出)。 –

回答

1

我在包裝中看到問題。如果你通過任何zip軟件打開jar文件,你可以看到缺少lib和images文件夾。您需要在build.properties文件中添加這些文件夾的條目。還需要將庫添加到類路徑中(額外的類路徑條目)如果在進行這些更改後構建插件,它應該在理想情況下工作。

+0

這終於奏效了!我以爲我已經包含了lib目錄,但我沒有。謝謝! – Geoff

+0

很高興聽到您的問題解決了:) – codejammer

2

這有可能是你第一次測試你的插件的目標平臺只用IFIle特定的擴展和補充IFolder後,但沒有加載的更新插件到Eclipse,因爲你並沒有增加插件的版本,沒」用-clean運行它(Eclipse需要重新加載插件)。

+0

這當然是一個有趣的想法!我會盡快嘗試。 – Geoff

+0

好吧,我終於有機會嘗試用'-clean'運行Eclipse,但沒有解決它。這裏還有其他事情要做。 – Geoff

1

您的代碼假設ExecutionEvent中的值保持有效,直到您的線程運行,而這可能並非如此。在execute方法中獲取所需的所有事件,並將它們傳遞給工作線程。

而且而非使用object instanceof IFileIFolder使用:

IFile file = (IFile)Platform.getAdapterManager().getAdapter(object, IFile.class); 
IFolder

和相同的。

+0

我剛試過這個,但很遺憾沒有修復它(你可以在https://github.com/gfairchild/eclipse-hasher/commit/c7743bca832a8635c61bc1d7c80b3fec2151ee65查看更改。 – Geoff

+1

添加使用適配器管理器來回答 –

+0

好的,我也修復了這個問題(提交https://github.com/gfairchild/eclipse-hasher/commit/65cdc8296c31f39d3cd450b621a43a74a48dae98)。但是,它仍然不起作用!這真是太離奇了。爲什麼它可以用於文件,但不適用於文件夾? – Geoff

0

您的問題:「我的問題是:我該如何調試?「

我的回答:‘遠程調試’

您可能希望谷歌有關的話題,但我建議您閱讀以下blog entry,我總是建議當有人問我如何在調試代碼這樣做,你可以調試你的代碼,以防萬一你的第一個eclipse安裝和你可能用來調試的第二個eclipse實例之間的環境有所不同(根據你的目標平臺設置和你的不同,它們可能會有所不同)二次啓動配置)

注意:如果您的具體問題是greg指出的線程相關問題但是,在第一個實例安裝中調試代碼將毫無用處。

相關問題