問題タブ [ipojo]
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.
android - Android SLF4J: NoClassDefFoundError android.util.Log
既存の OSGi/Felix/iPOJO アプリを Windows から Android に移植しています。アプリは SLF4J を使用しています。slf4j-android をバンドルとしてデプロイしました。ただし、ロガーをインスタンス化しようとしている行でjava.lang.NoClassDefFoundError: android.util.Logを取得しています。
SLF4J のドキュメントによると、クラスパスに slf4j-android jar を配置するだけでよく、それ以上の構成は必要ありません。( http://www.slf4j.org/android/ )
私のロガーは次のように宣言されています:
スタック トレースが不平を言っている行は次のとおりです。
完全な方法は次のとおりです。
ロガーを参照すると、android.util.Log で NoClassDefFoundError が発生する理由はありますか?
完全なスタック トレース:
ipojo - iPOJO - 注入されたサービスを使用する場合の NullPointer
サービスを定義しました:
そして実装:
別のクラス (実際にはActivator
クラス) では、次のようにサービスを参照します。
しかし、私はNullPointerException
Arch Gogo をインストールした結果は次のとおりです。
私は何が欠けていますか?
(バイトコード操作は Ant タスクによって行われます)
java - Eclipse 内で BndTools を使用して iPojo をセットアップするにはどうすればよいですか?
Eclipse 内のコンポーネント宣言に iPojo アノテーションを使用しようとしています。問題は、XML および変更されたクラスを生成しているときに、bnd-ipojo-plugin がプラグインのクラスパスで注釈を見つけられないことです。
Eclipse で次のようなエラーが発生します。
「-plugins」プロパティを含むように .bnd ファイルを変更しました。
私の Eclipse プロジェクトには、BuildPath にもすべての iPojo jar があります。誰か提案はありますか?または、iPojo を Eclipse に統合するためのより良い方法はありますか?
編集 1
ワークスペースを完全に再構築し、変数-plugin
と-pluginpath
変数を build.bnd ファイルに移動しました。
これは次のようになります。
これで、すべてのエラーがなくなり、失敗することなくビルドされます。ただし、XML ファイルはまだ生成されていません。build.bnd ファイルを変更する以外に別の手順はありますか?
java - org.osgi.* のパッケージのインポートは別の方法で処理されますか?
OSGi では、バージョン番号とバージョン範囲を使用する場合、定義された依存関係の解決プロセス、つまりパッケージのインポートとエクスポートはかなり厳密です。バージョン 1.2.3 の一部のパッケージ インポートで、1.2.3 を含む範囲の対応するエクスポートが見つからない場合、バンドルを解決または開始できません。これはいい。
ただし、これはコア パッケージには適用されないようですorg.osgi.framework
。Equinox (3.8.0) と Apache Felix (4.0.3) の両方の現在のバージョンはorg.osgi.framework,version=1.7.0
、エクスポートされたパッケージの 1 つとして定義されます。ただし、このパッケージの特定の下位バージョンを必要とするバンドル (例: Import-Package: org.osgi.framework;version=1.3
) は、引き続きこの新しいバージョンに解決されます。バンドルが解決されないことを期待します。
この動作はどのように説明できますか? これは OSGi 実装の誤動作ですか? コア OSGi パッケージを解決するときに例外がありませんか? または、Karaf がここで邪魔になっています (Apache Karaf でこれをテストしました。以下を参照してください)。
バージョンを明示的に宣言したくないこと、およびバージョンが完全に解決可能な範囲になることを知っています。ただし、そのようなインポートを定義する私の管理下にないバンドルがあります (つまり、iPOJO、以下を参照)。
セットアップの詳細: それぞれ Equinox または Felix を有効にして、Karaf 2.3.2 および 2.3.3 でこれをテストしました。私がテストに使用したデモ バンドルは githubで見つけることができます。これはそのままビルドでき、新しい Karaf コンテナーにデプロイすると失敗が表示されます。私がこれを発見した理由は、コア iPOJO バンドルが範囲ではなくそのような明示的なバージョンを定義しているためです。これを Karaf 機能記述子に追加し、Karaf Features Maven Pluginを使用して機能のエクスポート/インポートの整合性を検証しようとしましたが、失敗しました。
java - Apache Felix iPOJO イベント管理ハンドラーを使用する
Event Admin Handlersを使用したい。
次のコードを実行しようとしています。
しかし、エラーがあります:
私が理解しているように、Publisher コンポーネントのインスタンスを取得できません。「Apache Felix iPOJO Event Admin Handler (1.8.0)」バンドルが有効になっています。
使用する:
- アパッチ フェリックス 4.2.1
- org.apache.felix.ipojo.annotations (1.11.0)
- org.apache.felix.ipojo.api (1.11.0)
- org.apache.felix.ipojo.handler.eventadmin (1.8.0)
なにが問題ですか?どうも。
これはバンドルリストです:
osgi - サービス コンシューマ ( iPOJO ) のサービス プロパティへのアクセス
iPOJO では、サービス コンシューマーでサービス プロパティ ( getProperty(key) など) を読み取る方法はありますか? パブリッシャーは非常に簡単ですが、コンシューマーではフィルターしか使用できないようです。
ありがとう
java - ユーザーの要求に応じて ipojo コンポーネント インスタンスをプログラムで作成する
Apache Felix 4.2.1 iPOJO 1.11.0 を使用します。
ユーザーが要求したときに、コンポーネント インスタンスをプログラムで作成する必要があります。しかし、静的ファクトリメソッドで非静的フィールドを使用することはできません。
1)私が正しく理解していれば、 @Requires アノテーションを持つフィールドは静的にすることはできません。プロパティを取り、新しいコンポーネント インスタンスを受け取るファクトリ メソッドを作成する方法は?
2) そうするのは普通のことですか?
java - JavaデスクトップアプリのようにApache felix Ipojoを埋め込む
ダブルクリックで開くことができる Java アプリのような IPOJO アプリを作成するにはどうすればよいですか?
私はいくつかのコードを持っています:
IPOJOバンドルを開始する
エラーなしで実行されますが、「開始済み」のみが出力されます。「Hello world」は出力されません。この問題を解決するために私を助けてください。