close

  雖說是下篇,說是上篇也行。對像艾力克林這樣的角色來說,本來要教他東西,他就說你做個Sample最快,變成在幫他做他本來該做的事,而且還符合艾力克林的另一個要求,若沒法子幫他在Eclipse建置好環境,就不會開發,不會自己去找怎麼在Eclipse上work的方式或是在沒有Eclipse輔助下的work。廢話完畢,在Eclipse上Run Equinox的問題其實還不少,首先是設定OSGi Framework的執行環境,Eclipse預設是用Equinox,而Eclipse本身的運作就是Equinox為平台。

  在安裝新的Eclipse 3.5 SR1版後,最好一開始就設好Menu上的Run/[Run Configuration]的OSGi Framework選項。而我遇到的反模式是,import Equinox官方網站的QuickStart兩個飯粒後,對其中一個專案按右鍵選Run/OSGi Framework,如此一來Eclipse會先預先幫設好一個OSGi Framework,名為New_Configuration,而且是什麼Jar檔都匯入。

image

  上圖是點選[Run/Run Configuration]後Popup的介面。第一、先在左側清單OSGi Framework按右鍵點[Add],會出現右側的設定頁面。而預設值是全選,是故第二、按[Deselect All],取消所有的OSGi Jar,只選所需要的Jar。而若不是跑Web,只要挑到org.eclipse.osgi_version_vDate的Jar,就可以Run Equinox平台了。若想跑Jetty Web Server,請見上篇。


  import sample project很簡單,但要開啟一個全新的OSGi Project怎麼處理?點選File/New,挑[Plug-in Project]後按[Next]出現以下畫面:

image 直接輸入Project Name就可按[Next],紅框內Eclipse version和an OSGi framework差別在提供的Templates多寡而已,Eclipse version當然支援較多Eclipse自身提供的Jar。

image Activator類別會把Project Name作為預設Package,可手動修改Package Name和Class Name,按[Next]。

image 到這裡Eclipse提供眾多Template可以code generate,而an OSGi framework的Templates就較少些。都不選Template按[Finish]也會直接幫你code generate一個Activator.java和一個目錄META-INF以其底下的MANIFEST.MF(還有一個build.properties檔,但只對Eclipse有用),然後可以選擇切換成到PDE(Plug-in Develop Env)環境,出現MANIFEST.MF的GUI介面讓你編輯,如下:

image

  第二個頁籤[Dependencies]可以透過[Add]按鈕import其它OSGi Jar提供的Export功能,在我裝了Maven的Eclipse Plugin後,連Maven也提供export Jar可以import,它是看你手上資源有多少就顯示多少。

  寫完一個OSGi Jar後,可以按Project Name上按右鍵點選Run/OSGi Framework,就可以在Console頁籤看到osgi>提示了。而OSGi Framework也可以設定多個,比如只有Run OSGi核心,或是具有支援http功能的,這樣會比較好些。通常在osgi>提示下輸入ss,應該大部份都是ACTIVE狀態,若是INSTALLED狀態,表示有安裝沒運作,可以下達:start ID,看它會出現什麼Exception。在上篇測試sample.http.registry時,知道是需要org.eclipse.equinox.http.registry這個套件,但根據Exception指示,該套件卻還需要import org.eclipse.equinox.commonorg.eclipse.equinox.registry才行。和書中寫的不同,估計Equinox到Eclipse 3.5.1 SR1版,又做出一個registry抽象層導致。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Jemmy 的頭像
    Jemmy

    Jemmy Walker

    Jemmy 發表在 痞客邦 留言(0) 人氣()