問題タブ [bndtools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - OSGi バンドルが開始されていません: 要件 osgi.wiring.package がありません。> &(osgi.wiring.package=org.apache.felix.dm)
「Building Modular Cloud Apps with OSGi」に従おうとしています。「Creating the first OSGi application」という本の第 3 章で、著者は、bndtools を使用して Eclipse のサービスを使用して単純な OSGi アプリケーションを作成する方法について説明しています。
以下は、私のクラスと構成のスクリーンショットです。
私が直面している問題は
'!バンドルを解決できませんでした: [agenda.service.simple-0.0.1バンドルのアジェンダ.service.simple [9] の未解決の制約: 9.0 を解決できません: 要件がありません [9.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(バージョン>=3.0.0)(!(バージョン>=4.0.0)))
] ! バンドルのアジェンダ.service.simple-0.0.1 の開始に失敗しました。バンドルのアジェンダ.service.simple [9] の未解決の制約の例外: 9.0 を解決できません: 要件がありません [9.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(バージョン>=3.0.0)(!(バージョン>=4.0.0))) ______________'
また、gogo シェルでコマンドを発行しようとすると、正しく入力されないこともあります。しかし、最終的にバンドルのステータスは次のようになります
グ!lb gogo: CommandNotFoundException: コマンドが見つかりません: b
グ!lb gogo: CommandNotFoundException: コマンドが見つかりません: llb
グ!
グ!
グ!
グ!
グ!
グ!
lb START LEVEL 1 ID|状態|レベル|名前
osgi - osgi (bndtools) の Restlet バンドルが起動に失敗します。アクティベーター エラー com/sun/net/httpserver/HttpHandler
私が作成し、標準の Eclipse 環境で動作していたいくつかの osgi プラグインをbndtoolsに移行しています。Felix Web ConsoleとJetty HTTP Serviceを追加し、いくつかのEquinoxバンドルをFelixの同等 のものと交換しました。
org.restlet.jarを必要とする 1 つの特定のバンドルを実行すると、バンドルは解決されますが、アクティブ化されません。コンソール出力は次のとおりです。
____________________________ Apache Felix Gogo へようこそ
グ!2015-05-25 00:06:33.471:INFO:oejs.Server:jetty-7.xy-SNAPSHOT 2015-05-25 00:06:33.545:INFO:oejsh.ContextHandler:開始 oejsServletContextHandler{/,null} 2015- 05-25 00:06:33.620:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080 ! バンドル org.restlet-2.3.2.v20150501-1520 の開始に失敗しました。例外アクティベーター エラー com/sun/net/httpserver/HttpHandler から: org.restlet.engine.Engine:registerDefaultConnectors#839
私は他の質問に基づいて解決策を試しました。つまり、run プロパティ (おそらく私の bndtools .bnd ファイル) を設定することを推奨するこの質問と、フレームワーク リスナーを使用してRestletアプリケーションをアクティブ化することを提案する別の質問ですが、これらはうまくいきませんでした。私、そしてコンソール出力は同じでした。org.osgi.framework.system.packages.extra = com.sun.net.httpserver
私はまだ学んでいますが、解決策につながる助け、またはbndtoolsまたはEclipseが提供する可能性のある方法や機能に関するヒントをいただければ、その原因を突き止めることができます。
ちなみに、この同じプラグインの必須バンドルとして、 Felix Web Consoleが動作しています。
これが私のbndtools構成です:
java - bnd がバンドルにオプションのサービス (*, 0..n, ReferenceCardinality.MULTIPLE) を要求するのはなぜですか?
私のバンドルは、インターフェースと、このインターフェース実装を使用してそれらすべてをコールバックするコンポーネントを定義します (存在する場合)。
良い例えは LogService です。1 つ (または複数) 存在する場合は、メッセージでそれらを呼び出します。
これが私の DS 宣言です。
したがって、私のバンドルは、そのサービスの実装の有無にかかわらずデプロイできると期待しています。
ただし、日食が私に与えるものは次のとおりです。
なんで?これはまったく要件ではありません。それは明らかにオプションです。
この問題について話していると思われるこのチケットを見つけましたが、なぜクローズされたのかは明らかではありません。チケットに記載されているように、これを bnd.bnd に追加しました。
-resolve.effective: アクティブ;skip:="osgi.service"
eclipse - OSGi サブシステムは Eclipse 機能を置き換えることができますか?
OSGi R5 Enterprise リリースには、サブシステム仕様が含まれています。
- OSGi サブシステムには、Eclipse 機能のすべての機能が含まれていますか?
- そのためのツールは存在しますか?
eclipse
このマッピングの目的は、egfelix
またはbnd
/bndtools
ベースのインフラストラクチャで既存の機能を再利用することです。
java - OSGI バンドルの依存関係
SLF4J に依存するバンドルを作成したため、OSGI 実装に Logback を使用しています。これはすべてバンドルされ、正常にインストールされますが、バンドルを開始すると、次の例外が発生します。
org.osgi.framework.BundleException: com.felix.test [20](R 20.0) を解決できません: 要件がありません [com.felix.test [20](R 20.0)] osgi.wiring.package; (osgi.wiring.package=groovy.lang) 未解決の要件: [[com.felix.test [20](R 20.0)] osgi.wiring.package; (osgi.wiring.package=groovy.lang)]
私のマニフェストファイルgroovy.lang
にリストされていることがわかりますImport-Package
.Logbackが埋め込まれているが、その参照が埋め込まれていないことが問題であると確信しています。
バンドルの作成に使用しています。構成は次のとおりです。
これが私のマニフェストです:
私はそれを正しい方法で行っていますか、それともより良い方法がありますか?
ありがとうございました!
osgi - bndtools を使用して Declarative Services (DS) コンポーネントを起動できない
Eclipse 用の標準のbndtoolsプラグインをインストールし、apache felix osgi ランタイムを実行しています。宣言型サービス (DS) コンポーネントについて学習しようとしています。どうやら、アノテーション (bndtools のチュートリアルで例が示されています) が存在する前は、コンポーネントは xml データを使用して記述されていました。それが私がやろうとしていることです。
以下は単純なクラスです (DS コンポーネントとして公開されます): "HelloComponent.java"
コンポーネント宣言を行う xml ファイルは次のとおりです: 「minimal.xml」
そして、最終的に OSGi ランタイムに発行される jar ファイルを生成するために bndtools によって使用されることになっている .bnd ファイルは次のとおりです: "minimal_ds.bnd"
ホスト ランタイム OSGi コンテナーで次のバンドルを実行していることに注意してください。
すべてがアクティブに実行されているにもかかわらず、DS コンポーネントが初期化されていない理由がわかりません (コンソール出力「HelloComponent created.」が表示されるはずです)。どんな助けでも大歓迎です。
最後に、プロジェクトのディレクトリ構造は次のとおりです。