6

私たちのアプリは OSGi に移行しましたが、Eclipse での起動/デバッグに問題があります。プロセスは何ですか: OSGi アプリケーション開発者は、Equinox 環境をセットアップし、何百ものバンドル (jar=bundle?) をインストールし、コンソールから開始する必要がありますか? つまり、「ホットプラグ ギフテッド」アプリケーションの起動と「モジュラー チャレンジ」アプリケーションの起動は異なるのでしょうか?

二次的な、より具体的な質問です。すべてを処理することになっているブートストラップ バンドルがありますが、一連のクラスをロードした後は速度が低下し、ほとんどハングします。

...
...
...
Flat profile of 0.22 secs (16 total ticks): main

  Interpreted + native   Method                        
 16.7%     1  +     0    java.awt.Toolkit.addAWTEventLi[Loaded java.awt.SentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
stener
 16.7%     1  +     0    jav[Loaded java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
a.util.regex.Pattern.compile
 16.7%     1  +     0    sun.util.logging.PlatformLogger.<init>
 50.0%     3  +     0    Total interpreted

  Thread-local ticks:
 62.5%    10             Blocked (of total)
 50.0%     3             Class loader

...
...
...
[Loaded sun.reflect.Label$PatchInfo from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.MethodAccessorGenerator$1 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.ClassDefiner from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.ClassDefiner$1 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.GeneratedMethodAccessor1 from __JVM_DefineClass__]
[Dynamic-linking native method sun.java2d.DefaultDisposerRecord.invokeNativeDispose ... JNI]
[Dynamic-linking native method java.lang.ref.Finalizer.invokeFinalizeMethod ... JNI]

編集:質問の投稿から少し進んだ

[Loaded sun.reflect.GeneratedMethodAccessor1 from __JVM_DefineClass__]
[Dynamic-linking native method sun.java2d.DefaultDisposerRecord.invokeNativeDispose ... JNI]
[Dynamic-linking native method java.lang.ref.Finalizer.invokeFinalizeMethod ... JNI]
--- new stuff --- 
[Loaded sun.awt.windows.WComponentPeer$2 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Dynamic-linking native method sun.awt.windows.WInputMethod.disableNativeIME ... JNI]

したがって、これはデッドロックではありません。

4

1 に答える 1

5

Eclipse での起動とデバッグはかなり簡単です。(私の見解では) トリックは、必要なすべての Eclipse サポートが「OSGi」ではなく「プラグイン」とラベル付けされていることを理解することです。必要なすべての外部バンドルを使用してターゲット プラットフォームをセットアップします。それらをディレクトリにダンプし、ターゲット プラットフォーム コンフィギュレーターをそのフォルダーにポイントするだけです。ターゲット プラットフォームの構成は、[設定] -> [プラグイン開発] -> [ターゲット プラットフォーム] の下にあります。ターゲット プラットフォームを.targetファイルとして共有できます。適切なターゲット プラットフォームを使用すると、実行とコンパイルの両方に役立ちます。

バンドルを実行するには、右クリックして [Run as] -> [OSGi Framework (または debug as)] を選択します。ランタイム構成に含まれるバンドルと、使用される引数を微調整できます。たとえば、 を追加したい場合があります-console。ファイルを提供するエクスポート用のアプリケーションを作成することもできconfig.iniます。をconfig.ini取得すると、Equinox の起動時にバンドルがプリインストールされます。

于 2012-05-05T00:35:07.317 に答える