7

これが私の設定です:

OSGiアプリケーションを開発しており、ロギングを含めたいと考えています。slf4j+logbackを使用することにしました。

マニフェストエディターなどのEclipseIDEの恩恵を受けるために、EclipseをIDEおよびTychoとして使用しています。

だから私は次のことを試しました:

次のManifest.mfを使用して新しいプラグインを作成しました。

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Createcommand
Bundle-SymbolicName: de.hswt.oms.ws.wsr.createcommand
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: de.hswt.oms.ws.command.wsr,
 de.hswt.oms.ws.ds.core.data.impl,
org.slf4j
Service-Component: OSGI-INF/component.xml

ここで、「実行」->「構成の実行」->「OSGiフレームワーク」に移動してバンドルを選択し、「必要なプラグインの追加」をクリックすると、100を超えるバンドルが選択され、多くのエラーと例外が発生します。

そこで、既存のJarから、次の3つのjarを含む新しいプラグインを思いつきました。

  • logback-classic-1.0.7
  • logback-core-1.0.7
  • com.springsource.slf4j.api-1.6.1(これが良いアイデアだとは思わないが、ちょっと...)

新しい実行構成を手動で作成した場合([必要なバンドルを追加]をクリックしないと期待どおりに機能しますが、[必要なバンドルを追加]をクリックすると、多くのエラーが発生した100を超えるバンドルに戻ります(一部のJettyのもの例...)

だから私の質問は:OSGiアプリケーションでlogbackとslf4jを有効にして、それをeclipse内で使用し、適切に構成するにはどうすればよいですか?

さらに詳しい情報が必要な場合は、お気軽にお問い合わせください。

4

4 に答える 4

9

知る限り、現在の公式の Logback/SLF4J jar のバンドル マニフェスト ヘッダーにはいくつかの問題があります。ただし、次の 3 つの jar/bundle のみが必要です。基本的な機能には他に必要なものはありません。

  • SLF4J API
  • ログバックコア
  • ログバック クラシック

Eclipse では、複数のプロジェクトで再利用できるようにバンドルを Orbit に配置しています。マニフェスト ヘッダーに、有益と思われるいくつかの変更を適用します。たとえば、元の SLF4J API jar の循環依存を回避するために、実際の SLF4J バインディングをフラグメントとして提供します。

バンドルへのダウンロード リンクは次のとおりです。

あなたも望むかもしれません:

「必要なプラグインを追加」は十分にスマートではないことに注意してください。選択するプラグインが多すぎるか少なすぎる可能性があります。サービス API は 1 つのバンドルで提供されますが、実際のサービス実装は 2 番目のバンドルで提供される場合があります。そのバンドルを選択しない場合があります。

于 2012-11-28T07:09:02.433 に答える
2

「オプションのインポートを解決する」のようなチェックボックスがあります。デフォルトではオンになっていますが、ほとんどの場合、すべてを追加したいというあなたが説明した動作になります。

それをオフにすると役立つはずです。また、PDE は不要なフラグメントを大量に追加する傾向があります。

全体として、実行時に「適切な」バンドルを追加することで Eclipse を信頼することはめったにありません。「検証」を使用して、必要なものを手動で追加し、もう一度確認します。数分かかるかもしれませんが、PDE に任せたときに何が問題だったのかを突き止めるには数時間かかる場合があります。

于 2012-11-28T06:44:02.970 に答える
-1

Eclipse Equinox で使用する場合は、Eclipse-BuddyPolicy を試すことができます。これにより、1 つのプラグインが別のプラグインから明示的にインポートせずにすべてのクラスをロードできるようになります。これで問題が解決する場合があります。

jar を含むバンドルからマニフェストに追加します。

Eclipse-BuddyPolicy: 依存

およびロギングを使用してバンドルに

Eclipse-RegisterBuddy: com.other.plugin

http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fbundle_manifest.htmlを参照してください。

于 2012-11-27T21:41:21.253 に答える