Bundle開發過程中如何調試一直是個困擾的問題,今天我們看看Eclipse在這方面是如何解決的。
我用的Eclipse JavaEE Indigo 3.7.2版本。
第一步:開啟Eclipse,新增一個Plug-in項目。
第二步:輸入項目名稱HelloWorldBundle,注意這裡的外掛程式運行方式要選擇an OSGi Framework。
第三步:輸入Bundle有關的中繼資料資訊,這裡我們使用預設值。我們選擇自動產生Activator類,以便簡化我們後面的處理。
第四步:我們選擇從Hello OSGi Bundle模板產生Bundle項目。
第五步:輸入Hello OSGi Bundle模板需要的啟動和停止訊息。
第六步:到此為止,Eclipse依據我們的選擇自動產生了HelloWorldBundle外掛程式。雖然這是一個非常簡單的Bundle,但是毫無疑問,這個是一個完整的Bundle,它是可以直接啟動並執行。
HelloWorldBundle的目錄結構:
Activator.java檔案的內容:
package helloworldbundle;import org.osgi.framework.BundleActivator;import org.osgi.framework.BundleContext;public class Activator implements BundleActivator { /* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) */ public void start(BundleContext context) throws Exception { System.out.println("Hello World!!"); } /* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext context) throws Exception { System.out.println("Goodbye World!!"); }}
MANIFEST.MF的內容:
Manifest-Version: 1.0Bundle-ManifestVersion: 2Bundle-Name: HelloWorldBundleBundle-SymbolicName: HelloWorldBundleBundle-Version: 1.0.0.qualifierBundle-Activator: helloworldbundle.ActivatorImport-Package: org.osgi.framework;version="1.3.0"Bundle-RequiredExecutionEnvironment: JavaSE-1.6
第七步:在Activator.java的start()和stop()方法處增加兩個斷點:
第八步:在HelloWorldBundle項目上點擊滑鼠右鍵,在彈出的Debug As功能裡面選擇OSGi Framework:
第九步:一切OK,Eclipse切換到了Debug視圖,Console視窗出現了OSGi>提示符,代碼也在我們定義的start斷點處停了下來。
第十步:在OSGi>提示符後面輸入close命令,以便停止OSGi架構(shutdown and exit)。這個時候,代碼就會在stop斷點處停下來。
使用Eclipse提供的調試功能,將可以讓我們在Bundle的開發過程中如虎添翼了。
更多的參考連結:
Coding bundles on the Slug demo movie
Remote debugging on the Slug demo movie