0

ファイル インストール バンドルを使用して組み込みモードで Felix を使用しており、インストール済みだが解決済みではない (したがって開始/アクティブではない) バンドルがあり、根本的な原因を見つける必要があると思っていた以上に苦労しています。ログに...

「解決できません...理由...」または「BundleException:バンドル内の未解決の制約...解決できません...要件がありません... osgi.wiring.package」のような役立つものをどのように/どこで入手しますかFelix フレームワークおよび/またはファイル インストール バンドルから自動的に、ログ内のメッセージの 私はそのようなものを見ていません - 私はそうすべきですか? どこ?

ロギングも追加しました ( Apache Felix Logおよびosgi-loglistener-slf4j を介して) が、まだ - (Embedded) Felix でこの種の問題のロギングを有効にするために、私が行った以上のことを行う必要がありますか?

次に、Felix Gogo Shell CLI を追加しましたが、そのinspectコマンドもあまり役に立たず (解決されていないバンドルでは機能しません)、start根本的な原因のみが表示されることがわかりました。コンソールを用意して開始する必要なく、ログに記録します。

g! lb  
START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (5.6.1)|5.6.1
    1|Active     |    1|Apache Felix File Install (3.5.4)|3.5.4
    2|Active     |    1|Apache Felix Remote Shell (1.1.2)|1.1.2
    3|Active     |    1|Apache Felix Gogo Runtime (0.16.2)|0.16.2
    4|Active     |    1|Apache Felix Gogo Command (0.16.0)|0.16.0
    5|Active     |    1|Apache Felix Gogo Shell (0.12.0)|0.12.0
    6|Installed  |    1|osgi.testplugin (1.0.0.SNAPSHOT)|1.0.0.SNAPSHOT
g! inspect req * 6
Bundle 6 is not resolved.
g! start 6
org.osgi.framework.BundleException: Unable to resolve ch.vorburger.minecraft.osgi.testplugin [8](R 8.0): missing requirement [ch.vorburger.minecraft.osgi.testplugin [8](R 8.0)] osgi.wiring.package; (osgi.wiring.package=org.spongepowered.api.command) Unresolved requirements: [[ch.vorburger.minecraft.osgi.testplugin [8](R 8.0)] osgi.wiring.package; (osgi.wiring.package=org.spongepowered.api.command)]

OSGi の非同期バンドルの初期化により、依存バンドルが起動するのを待たなければならない場合があるため、失敗したバンドルの開始をいつログに記録するかが明確でない可能性があることは理解していますか? ある種の猶予期間の後、この種のエラーをログに記録できませんでしたか?

4

2 に答える 2

1

すべてのバンドルが解決されていることを確認する pax 試験オプションを見つける前に、テストで同様の問題が発生しました。

私がしたことは、プログラムでバンドルのリストを調べ、開始されていない各バンドルで start を呼び出すことでした。bundle.start() は、上記のコンソール コマンドのような理由で例外をスローします。

デフォルトでこれをログに記録するように felix を設定できるかどうかは不明です。

于 2016-12-12T08:12:22.703 に答える