天天看點

如何自行處理寫好的eclipse插件安裝不生效

本帖最後由 anrainie 于 2013-7-23 11:31 編輯

對于eclipse插件開發的新手,經常會遇到插件寫好了,拷貝到plugins或dropins檔案下,但是沒有生效。上網各種問,也很難找到正确的答案。

事實上,自己現場處理,會更快的得到答案,和提高自己解決問題的能力。

現在我說下一下如何應用一個插件:

1、在插件環境下測試。

選擇debug按鈕下的run Configuration(調試 配置),選中Argument。讀一下英文,就可以明白這裡是配置虛拟機和eclipse的啟動參數,後面我會說明在“應用環境”下要怎麼使用這些參數

<ignore_js_op>

如何自行處理寫好的eclipse插件安裝不生效

在program arguments中加入兩個參數:

-console  打開控制台

-consoleLog 控制台列印Log資訊

這兩個都是給你調試用的,請養成使用控制台的習慣。

配置好之後,選擇Plugin-in标簽,如下圖:

如何自行處理寫好的eclipse插件安裝不生效

讀英文,注意Launch with,如果你是新手,推薦選擇all workspace and enable target plug-in

這樣就會加載所有的插件,自然包括你寫的那個。

選擇之後,點選下面的debug(調試)按鈕

看效果。

注意!我上面強調了兩次讀英文,英語是程式設計需要的基本能力,eclipse又是一個說明很詳細的IDE,事實上,你能在網上找到的大部分教程内容,都不一定比eclipse自帶的Help Contents詳細。養成良好的程式設計習慣,先把UI上提供的東西都讀一遍,再決定是不是要“搜尋”或者“問”。

2、在應用環境下使用通過了上一步測試的插件

要确定幾點:

a、你的開發環境和你的應用環境是不是一緻?

b、你是不是已經打包了好所有你需要的資源?

如何檢查呢?

其實都是一些配置資訊。主要是檢查兩個檔案:manifest.mf和build.properties。某些特殊情況下可能還要檢查plugin.xml,暫不讨論。

eclipse提供了完整的配置工具。

首先是build,看下圖:

如何自行處理寫好的eclipse插件安裝不生效

左側的描述說了“選擇位元組碼建構的檔案夾和檔案”

就是說,你打包的時候,選擇的這些檔案才會被加入到jar中去。

是以,如果你添加了lib或者其他的配置檔案什麼的,請不要忘記在build中選上。

然後是manifest.mf。

這裡聲明了本插件依賴的包和插件,本插件開放的包(其中可以含有各種限制規則,暫不讨論),本插件的jre環境,基本的插件資訊,等等。

這裡要注意的是你的“開發環境”具備的包和插件,在你的“應用環境”上是不是具備?

主要是三個:

1、依賴的包 Require-Bundle:

2、依賴的插件 Import-Package:

3、jre版本 Bundle-RequiredExecutionEnvironment:

解決方式是:為應用環境添加上所有缺失的插件。

當然,80%的環境錯誤,都是版本不一緻導緻的

你可以嘗試去掉或修改版本資訊

比如Require-Bundle:  org.eclipse.ui.ide;bundle-version="3.6.1"

修改為Require-Bundle:  org.eclipse.ui.ide

又比如:

Bundle-RequiredExecutionEnvironment: JavaSE-1.7

換成

Bundle-RequiredExecutionEnvironment: JavaSE-1.6

3、在應用環境下背景調試

當你把插件拷貝到應用環境的plugins或者dropins下面後,你再也沒辦法對它debug了。

如果一個插件加載不成功,它的加載資訊會顯示在.configuration的log檔案中,且,在Help-> About Eclipse裡也會有全部的已安裝插件資訊。

但是,這樣就足夠了嗎?

一個插件,沒有産生效果,又沒有具體的報錯,不知道安裝好了沒有,我們還有任何辦法嗎?

答案當然是肯定的。

我們需要利用osgi(equinox)的背景console。

記得之前我說的Eclipse啟動參數-console嗎?

在應用環境下我們也可以使用該參數,如果你使用的linux,我就不贅述如何添加參數了。

在windows環境下,給Eclipse執行檔案建立一個快捷方式,右鍵屬性,在“目标”裡的檔案後再加上一個-console參數

Eclipse就以console模式啟動了,在Eclipse的splash彈出來的同時,也會彈出一個osgi背景,如下圖:<ignore_js_op>

如何自行處理寫好的eclipse插件安裝不生效

使用

ss指令可以檢視所有的插件

ss後面可以寫查詢條件

比如

ss org.*

就是找到所有以org.開頭的插件(注意,這裡的名稱插件名稱,而非項目名)

如果能夠找到你需要的插件,則你能看到該插件的ID号。

使用start [id] 指令,可以啟動該插件,看看是否報錯。

注意:在osgi bundle的生命周期中,started和[lazy]才表示它是可以正常使用的

在某些特别的情況下該插件沒有被installed,則你需要install指令來安裝它。

install指令後面的參數需要是一個完整的URL

如果不了解URL格式怎麼寫,請百度之。

更多console的介紹可以看這裡:

<a href="http://www.ibm.com/developerworks/library/os-ecl-osgiconsole/" target="_blank">http://www.ibm.com/developerworks/library/os-ecl-osgiconsole/</a>

了解了以上,你就掌握了基本的插件調試技能。