問題タブ [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.
java - プライベートパッケージマニフェストヘッダーは何をしますか?
私はとに精通してImport-Package
いExport-Package
ますが、これは私にとって新しいものです。それは何をするためのものか?
osgi - bndtools Activator バンドル
bndtools でアクティベーターを使用して単純なバンドルを作成するにはどうすればよいですか? それは言い続けています:
Eclipse でこのプロジェクトを作成する方法は次のとおりです。
- 新しい「Bndtools OSGi プロジェクト」を作成します
- 右クリック、構成 - Maven プロジェクトに変換
Activator.java
パッケージで作成しますcom.myproj
。com.myproj
専用パッケージに追加- アクティベーターを
com.Activator
これが私のbndファイルです:
生成された jar が空です。任意のヒント?
PS: これは私の Eclipse プロジェクト (zip アーカイブとしてエクスポート) です。
java - osgiのバイトからオブジェクトをどのように逆シリアル化しますか
私の osgi アプリケーションには、 と の 3 つのバンドルがtravel.api
ありtable.api
ますutils
。travel.api
に依存table.api
しutils
ます。travel.api
に直接依存しないことに注意してくださいutils
。aQute Bnd を使用してマニフェストを生成していますが、正常に動作していると思います。マニフェストを以下に示します。
PageData
type のフィールドを持つと呼ばれるクラスがありTableData
、これにはさらに type のフィールドがありTestObject
ます。PageData
は にありtravel.api
、TableData
は にありtable.api
、TestObject
は にありutils
ます。バンドルが読み込まれると、これはすべて正常に機能します。問題は、オブジェクトを表すバイト配列を受け取ったときに発生しPageData
ます。travel.api
バンドルでデシリアライズする必要があります。それが定義されている場所であるため、これは問題にはなりません。バンドルからクラスローダーを使用org.jboss.netty.handler.codec.serialization.ObjectDecoderInputStream
して渡します。travel.api
以下に示す例外がスローされますが、基本的には次のようになります。
Import-Package
fortravel.api
を見るとcom.openaf.utils
(場所がどこにあるか) がリストされていないことがわかるので、これは理にかなってTestObject
います。このパッケージを追加すると、正しく逆シリアル化されます。PageData
ただし、使用するすべてのフィールドを調べて、それらがすべてこのモジュールにインポートされていることを確認する必要があるため、これらのフィールドに含まれるすべてのフィールドで再帰的に行う必要があるため、これは一般的な解決策とは思えません。
私はここで何か完全に間違っていますか?
OSGi を使用するときにオブジェクトをデシリアライズする最良の方法は何ですか?
私がそれを正しく行っていて、すべての「深い」インポートを指定する必要がある場合、Bnd に「深い」生成をさせる方法はありますか?
どんな助けでも大歓迎です!
osgi ライブラリとして felix v4 を使用しています。
ありがとう、ニック。
java - OSGiの推移的な依存関係
私はNoClassDefFoundError
実行時に取得していますが、"uses"
推移性が作成されたと思ったので、ディレクティブはこれを回避すると思いました(間違っている場合は修正してください)。これが私の設定です:
ここで、バンドル3がBのクラスを呼び出し、次にAのクラスを呼び出すと例外が発生します。コンソールに基づいて、BundleClassLoader
バンドル3(つまり、それ自体)でクラスを検索しますが、バンドル1では検索されないことがわかります。BNDにバンドル3にAをインポートするように強制すると、すべてが正常に機能しますが、手間がかかりすぎます。何かが足りないような気がします。equinoxは、マニフェストの情報を使用してバンドルクラスパスを設定するべきではありませんか?または、最悪の場合、BNDは3の1への依存関係を検出し、3のマニフェストでパッケージAをインポートするべきではありませんか?
私のバンドルはすべてあり、制約違反active
はありませんuses
osgi - bnd-cacheにバンドルが見つかりません
bndtoolsに問題があります。解決は問題なく完了しましたが、実行記述子で「Run OSGi」をクリックすると、次の問題が発生します。
Status ERROR: bndtools.core code=0 jena-arq~;version=[2.9.4,2.9.5) Not found in [bnd-cache, aQute.lib.deployer.obr.LocalOBR@1fef0b44, aQute.lib.deployer.obr.OBR@6ccadbd, aQute.lib.deployer.obr.LocalOBR@67a256c7, aQute.lib.deployer.obr.OBR@2d52912f] null
maven - OSGi フラグメントからのコード以外のリソースを含む OSGi バンドルを maven で構築するにはどうすればよいですか?
コード以外のリソースを含む OSGi フラグメントがあります。これは事実上、一連のリソース (画像ファイルなど) を含む jar ファイルです。これは maven で構築しました。
リソースを含むフラグメントに依存する Maven を使用して別のバンドルを構築したいと思います。つまり、このバンドル内のコードが実行されるときに、フラグメントからのリソースがロードされ、Java の getResources() コマンドで使用できるようにする必要があります。
これどうやってするの?
configuration - BND を使用して構成のデフォルトのブール値を作成するにはどうすればよいですか
OSGI cm によって管理される構成の作成を支援するために、BND 注釈を使用しています。
ここに私の簡単な設定があります
BND 構成アノテーション ライブラリは何度も使用していますが、boolean 型を使用するのはこれが初めてです。
私はこれを読んだ
そして、便宜上、ブール値の整数またはその他の代替数値ベースの処理について説明します。問題は、deflt メソッドが常に文字列値を返すことです。型が整数の場合、「2」を実行します (これらは解析されます)。ただし、ブール値は、この割り当てポイントまで、構成可能な BND コードで解析されていないようです。
deflt 値が解析されない場合に、これが true を返す理由をさらに知りたいと思います。cm は Boolean.parseFrom を実行しようとするため、これが仕様に厳密に従い、false を返すことを期待していました。
cmで値を変更すると、trueに設定してから再びfalseに設定すると正しく機能するため、これはすべて完全な失敗ではありませんが、明らかにそれが機能するかどうか疑問に思っているだけです。
BNDの構成注釈を使用してBOOLEANのデフォルト値を設定する方法を誰かが知っているかどうかを知りたいだけです。
ありがとう
java - アクティブではなく解決された必要なバンドルの状態
バンドル B に依存するバンドル A があります。バンドル A のコードが実行され、バンドル B のクラスにアクセスすると、バンドル B の状態はアクティブ (32) ではなく解決 (4) され、バンドル B のアクティベーターは解決されませんでした。同様に実行します。バンドル B のマニフェストに何か問題があると思いますが、それを見つけることはできません。
これは、bnd で生成されたバンドル B のマニフェストです。
これは PDE で生成されたバンドル A のマニフェストです。
java - コンソールへの Bndtools 出力
OSGi プロジェクトで bndtools を使い始めたばかりですが、情報出力 (Hibernate 情報、Spring DM 情報) をコンソール (Eclipse) に取得するようにプロジェクトを構成できないようです。フィードバックがなく、ログ ファイルが作成されていないように見えるため、プロジェクトで苦労しています。
Jラブ
osgi - Sonar Runner Gradle タスクを自分のタスクの 1 つに依存させる
最近gradle 1.5でリリースされた新しいSonar Runnerタスクを試しています。私がやりたいことは、ソナー ランナー タスクを別のタスクに依存させて、このプロジェクトのソナー プロパティを正しく設定できるようにすることです (つまり、sonar.sources、sonar.binaries、sonar.libraries、sonar.java.source)。 、sonar.java.target)。
具体的には、ant init タスクが実行されたときにこれらの値を提供する bnd という osgi ビルド ツールを使用しています (デフォルトの bnd build.xml ファイルを含めている間、私の完全なビルドは実際には gradle を使用して行われていることに注意してください)。
これを行うことでソナーランナータスクをカスタマイズできると思いました(これはマルチモジュールビルドです):
最終的に次のようなものを追加します(bnd ant変数について私が理解していることから):
残念ながら、dependsOn を追加しようとすると、エラーが発生します。
sonarRunner を gradle タスクに依存させようとすると、次のエラーが発生します。
ここで明らかな何かが欠けていますか?誰かが私を正しい方向に向けることができれば、それは大きな助けになるでしょう.