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


本帖最后由 anrainie 於 2013-7-23 11:31 編輯

對於eclipse插件開發的新手,經常會遇到插件寫好了,拷貝到plugins或dropins文件下,但是沒有生效。上網各種問,也很難找到正確的答案。
事實上,自己現場處理,會更快的得到答案,和提高自己解決問題的能力。
現在我說下一下如何應用一個插件:

1、在插件環境下測試。


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


<ignore_js_op>


在program arguments中加入兩個參數:
-console  打開控制台
-consoleLog 控制台打印Log信息

這兩個都是給你調試用的,請養成使用控制台的習慣。
配置好之后,選擇Plugin-in標簽,如下圖:
<ignore_js_op>



讀英文,注意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,看下圖:
<ignore_js_op>


左側的描述說了“選擇字節碼構建的文件夾和文件”
就是說,你打包的時候,選擇的這些文件才會被加入到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>



使用
ss命令可以查看所有的插件
ss后面可以寫查詢條件

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

如果能夠找到你需要的插件,則你能看到該插件的ID號。
使用start [id] 命令,可以啟動該插件,看看是否報錯。
注意:在osgi bundle的生命周期中,started和[lazy]才表示它是可以正常使用的

在某些特別的情況下該插件沒有被installed,則你需要install命令來安裝它。
install命令后面的參數需要是一個完整的URL
如果不理解URL格式怎么寫,請百度之。

更多console的介紹可以看這里:
http://www.ibm.com/developerworks/library/os-ecl-osgiconsole/

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM