2008年2月23日土曜日

Apache Felix OSGi tutorial: Example 1 をEclipse 3.3で.

追記 2008/06/28 これを元にMac用のアプリを作りました.


1.Projectを作成
 New/'Project' を選択(Java Projectじゃないよ)

 Wizerdの選択にてPlug-in Projectを選択.


 Dialogに入力
  Project name: tutorial.example1
  Target Platform: an OSGi framework standard
  (ほかそのまま)
  Nextを押す.

#(OSGi framework standardが選べればEclipse 3.2でも良いはずです)

 'Plug-in Content'のDialogとなる.
  Finishを押す.


2.Activator.javaの編集
 (面倒な人は編集しなくてもテンプレートで十分だよ.)
 src/example/tutorial1/Activator.javaにここのコードを書き写す.

3.Plug-in Manifest Editorを使ってbuildする.
 このEditor, META-INF/MANIFEST.MFをクリックすると立ち上がる.(プロジェクトができた時も立ち上がってる.)
 一番左のタブ'Overview'にあるExportingの3項目
  '3. Export the plug-in in a format suitable for deployment using the(?) Export Wizard'をクリック(Export Wizard部分)
 で,Deployable Plugin-ins and fragmentsダイアログがでる.
 DestinationタブのDirectoryを選択しテキトーな場所(ディレクトリ)を指定.(以降ここを${DIRECTORY}と呼ぶ)
 Finishを押す.


 ${DIRECTORY}/plugins/tutorial.example1_1.0.0.jarが出来上がる.

4.FelixApplicationに対する修正.
 ここのMain.javaにおいて
public static String PLUGINS_LOCATION = "file:/path/to/plugins/";


public static String PLUGINS_LOCATION = "file:${DIRECTORY}/plugins/";

に変更.


5.実行!
 FelixApplicationプロジェクトのexample.Mainクラスを実行.
 Tutorial通りなら以下
Starting to listen for service events.

 Eclipseのテンプレートのままなら
 
Hello World!!

 とConsoleに表示されるはず.
 どっちも止められないからConsole Viewの停止ボタンで止めてね.


以上.

ちなみに「Windowを出したいな.」なんてことでSwingなんかを使いたくなったらこんな感じにする.
追記:上のはちょっとまった.Felix側でjavax.swingをexportしてあげないといけない.このやり方はまた今度!

追記2:plugin側でjavax.swingを'Imported Pakages'にて設定したら,このFelixApplicationではこの一行を追加する.
 private static String getString_SystemPackages() {
List list = new ArrayList();
list.add("org.osgi.framework; version=1.3.0");
list.add("org.osgi.service.packageadmin; version=1.2.0");
list.add("org.osgi.service.startlevel; version=1.0.0");
list.add("org.osgi.service.url; version=1.0.0");
list.add("javax.swing"); // <- これを追加
return join(list, ",");
}

0 件のコメント: