問題タブ [bnd]
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.
osgi - Eclipse での Bndtools を使用した Apache Felix FileInstall 構成
Eclipse Mars で Bndtools プラグインを使用しています。プロジェクトでは、Apache FileInstall バンドルが必要であり、実行記述子の下の「実行要件」で選択しました。バンドルはアクティブです。
ポーリング、構成ファイルを監視するディレクトリなどの FileInstall の現在のパラメーターを取得する方法を理解できないため、ManagedService を実装するクラスの構成ファイルをどこに置くべきかわかりません。
VM引数の下に次の行を追加しようとすると...
-Dfelix.fileinstall.dir=/home/ppatierno/Downloads
Config Admin サービスは、数秒後に停止状態になります。
「実行要件」の下に FileInstall バンドルを追加せずに、Apache felix コンソールからインストールして起動すると、起動してアクティブになりますが、プロパティの上にメイン構成が出力されません。
何か案が ?
java - bndtools を使用してデフォルト パッケージからインポートするサード パーティの jar をラップする
サードパーティの瓶を包みたい。残念ながら、ベンダーは、1 つのメソッドを持つ 1 つのクラス (a.class) をデフォルト パッケージに配置しました。
を使用してリソースを含めようとするとInclude-Resource: @lib/acme-8.0.jar
、次のエラーが発生します。
bnd print -all acme-8.0.jar
次の出力が得られます (短縮され、ベンダー名が acme に置き換えられます)
この出力を正しく理解していれば、いくつかのパッケージがデフォルトのパッケージを使用しています。それはどのように可能ですか?私の知る限り、デフォルトのパッケージからクラスをインポートすることはできません。
問題のあるクラスを移動するように要求して、既にベンダーに連絡しました。おそらく、彼は私の提案に従わないだろう.
デフォルト パッケージのクラスを処理するための回避策はありますか?
maven - DS と maven-bundle-plugin を使用してマニフェストを生成する適切な方法は何ですか?
私は今日、プロジェクトのマニフェストを生成するために maven-bundle-plugin を使用しています。他の制約により、私のモジュールは「jar」パッケージを使用しています (「バンドル」パッケージは使用できません)。現在、私の pom は次のようになっています。
注釈付きコンポーネントから 'Service-Component' ヘッダーと DS xml 記述子を生成したいのですが、" <_dsannotations>*</_dsannotations>
" を追加してもうまくいきません:
- Service-Component ヘッダーは正しく生成されますが、xml が jar に存在しません
- クリーンなゴールなしで Maven プロジェクトを再構築すると、「Service-Component」ヘッダーに重複した参照が含まれます: コードを掘り下げた後、プラグインは target/classes/META-INF/MANIFEST.MF から生成された古いマニフェストを使用してマージします新しく生成されたものと一緒に。次に、「Service-Component」が連結されます
では、これが機能するように pom を構成するにはどうすればよいですか? 今のところ、「unpackBundle」オプション (バンドルに xml を含めるため) と空の src/main/resource/MANIFEST.MF (古いマニフェストのマージをバイパスするため) を使用します。 -)
さらに、「bnd-maven-plugin」は意図したとおりに機能しますが、親 pom の「グローバル構成」、Bundle-SymbolicName または Bundle-Name の生成として、maven との統合が軽すぎる (または文書化されていない) 可能性があります。など
ありがとう!
java - API バンドルを実装するライブラリ バンドルは、API パッケージをエクスポートする必要がありますか?
他のバンドルを使用するバンドルの大きなツリーがあります。例えば:
- 基本バンドルは API バンドルを使用します。
- API バンドルは純粋な API バンドルです
- 基本バンドルは API バンドルを使用し、ライブラリ バンドルです (便利なライブラリ関数、他のバンドルが使用できます)
- API バンドルは API パッケージをエクスポートします
- 基本バンドルは基本パッケージをエクスポートします。基本バンドルは、API バンドルから API パッケージもエクスポートします。
基本バンドルで API パッケージもエクスポートできるようにするのは正しいですか?
これを行ったのは、ユーザーがベース バンドルをビルド パスに追加するだけでよく、ベース + API バンドルが bndtools によって検出されるためです。それ以外の場合、ベース バンドルを使用するユーザーは、ベース バンドルがビルドパスに追加する必要がある API バンドルを使用していることを理解する必要があります。
java - バージョン修飾子を使用して、OSGi で特定のパッケージ バージョンを要求することはできますか?
ラップしたいサードパーティの JAR があります。独自の OSGi マニフェストがありません。たとえば、org.myproject
. そこで、バンドル ラッパーを作成します。
これは問題なく動作します - のリリース用のバージョンを提供しorg.myproject
ます。これは、 の作成者によって決定されorg.myproject
ます。と言う1.0.1
。
が変更されましorg.myproject
た。変更を含めたいと思います。ただし、これに関する公式リリースはありません。これは、修飾子を使用して新しいバージョンを表すことができるように思えます。1.0.1.$timestamp
ただし、JAR を bndtools でラップする場合、パッケージのエクスポートは引き続き としてバージョン管理され1.0.1
ます。
OSGi で修飾子固有のパッケージ バージョンをエクスポートしてからインポートすることは可能ですか? これを bndtools で管理する最善の方法は何ですか?
java - BndTools のデフォルト ランチャーを置き換え、エクスポート ファイル構造を変更する方法
OSGI アプリケーションの開発にBndTools ( http://bndtools.org/ ) を使用しています。すべて正常に動作していますが、アプリのエクスポート中に変更したいことがいくつかあります。
私は2つのことを達成しようとしています(関連していると思います):
1: デフォルトの BndTools ランチャー ( aQute.launcher
) をカスタムのランチャーに置き換えます (または.JAR
フォーマットします) 。
デフォルトの BndTools ランチャー (aQute.launcher) を削除またはカスタム ランチャーに変更するにはどうすればよいですか?
このトピックについて私が知ることができた唯一のことは、ここにあります: http://goo.gl/jYliih
ランチャーは bnd に組み込まれておらず、実際の起動戦略はパラメーター化されています。ランチャは、JAR を .xml ファイルに配置することにより、bnd または bndrun ファイルに関連付けられます
-runpath
。に.JAR
は、ランチャーになる Launcher-Plugin ヘッダーが必要です。上にランチャーが見つからない場合は-runpath
、ビルトインbiz.aQute.launcher
が使用されます。
その理由は、アプリがコマンド引数を受け入れ、aQute ランチャーのものに干渉しないようにする必要があるためです (すべての -run 引数と同様)。一方.bat/.sh
、アプリを起動するバッチ アプローチを取り除き、単一の.jar
ファイルを使用してアプリを起動したいと考えています。
それは可能ですか?
2: エクスポートされたファイル構造をカスタマイズする
デフォルトでは、BndTools はアプリをエクスポートするときに次のファイル構造を作成します。
jar/
-> これは OSGI jar バンドル フォルダーです。
aQute/
-> デフォルトの BndTools Launcher (Launcher.class 内部)
META-INF/
-> META-INF フォルダがここにあるのはなぜですか? JARではありません
launcher.properties
-> ランチャーのプロパティ
start.sh
--> このバッチ ファイルから Launcher.class を起動します。
start.bat
/ JARと比較して、これの利点はどこにありますか?
基本的に、、およびファイルを削除しaQute
、バイナリ ファイル用のフォルダーを追加したいと思います。META-INF
start.*
bin
これは、「Ant」、「Maven」、または「Gridle」スクリプトで実現できるはずです。しかし、BndTools をサポートしない「BndTools プロジェクト」または「Gradle プロジェクト」を作成することはできます。「BndTools Gradle プラグイン」をインストールしましたが、このトピックに関する有用なドキュメントはどこにも見つかりませんでした。
誰かが私を助けてくれるか、これで正しい方向に向けてくれることを願っています. ご挨拶。