1

非常に単純なバンドルを作成しました。

public class Main implements BundleActivator, ServiceListener{

public void start(BundleContext bc) throws Exception {

    bc.addServiceListener(this);

    //trivial system out
    System.out.println("started");

    //output to file
    FileWriter fw = new FileWriter("test.txt");
    fw.write("it has worked");
    fw.close();

    //opening of a frame
    JFrame f = new JFrame();
    JLabel l = new JLabel("test");
    f.add(l);
    f.setVisible(true);
    f.pack();

}

(other methods with empty body)

マニフェストファイルを編集しました:

Bundle-Name: Service listener example
Bundle-Description: A bundle that displays messages at startup and whe service events occur
Bundle-Vendor: Apache Felix
Bundle-Version: 1.0.0
Bundle-Activator: tosgi01.Main
Import-Package: org.osgi.framework

私はこれらすべてのものをjar処理し、felixを起動し、次のようにしました。start file:testosgi.jar

エラーは発生しませんが、機能しません。何が起こっているかについての詳細な情報を取得する方法はありますか?

4

4 に答える 4

2

100% 確実ではありませんが、マニフェストで Bundle-SymbolicName を指定する必要があると思います。javax.swing パッケージ (など) もインポートする必要があります。これらのパッケージはデフォルトでは利用できません。

アプリケーションのコンソールには多くの出力があるため、メッセージを見落とすことはありません。私にとっては、問題のバンドルを停止して開始することが役立つことがよくあります。

また、バンドルの問題を診断するためのツールを提供するコンソール/シェルを試してみてください。

于 2011-10-20T21:37:55.310 に答える
1

直接お手伝いすることはできませんが、見逃した方のために: NetBeans プラットフォーム (Swing ベースの RCP) には、OSGi と Apache Felix のサポートが付属しています。

http://wiki.netbeans.org/OSGiAndNetBeans

于 2011-10-20T14:18:59.047 に答える
0

まず、マニフェストに必須の "Bundle-SymbolicName" タグがありません。

次に、Felix にはGogoというコンソール バンドルがあり、バンドルが開始されているかどうかを理解するのに役立ちます。このバンドルをインストールしてコンソールに書き込むだけです

lb

インストールされているバンドルのリストが表示されます。バンドルを見つけて、「アクティブ」状態であれば問題ありません。そうでない場合は、書いてください

start <your_bundle_number>

そしてログを見る。

問題が解決しない場合は、ファイル conf/config.properties の行felix.log.level=1を見つけて に変更しfelix.log.level=4ます。バンドルを開始するプロセス全体がログに表示されます。

于 2011-11-16T08:03:47.950 に答える
0

このような問題に対する多くのデバッグ オプションの中で、Felix Web Console [1] が私のお気に入りです。

バンドルがアクティブであることを確認し、そうでない場合は、コンソールのバンドル詳細ページでエラー メッセージを確認してください。Swing について疑問がある場合は、最初にそれを削除して、バンドル アクティベーターが実際に呼び出されていることを確認することから始めます。

[1] http://felix.apache.org/site/apache-felix-web-console.html

于 2011-10-21T09:53:43.720 に答える