Bundle-Classpath にいくつかの jar を配置しました。以下の行は、Felix プラグインを使用してバンドル用の manigest.mf を作成する pom.xml のエントリを示しています。
<Bundle-ClassPath>.,lib/com.springsource.org.h2-1.0.71.jar,lib/com.springsource.org.apache.lucene-2.3.2.jar,lib/com.springsource.org.apache.lucene.search-2.3.2.jar</Bundle-ClassPath>
これらの jar にはパッケージをインポートするクラスがありますが、私が見る限り、すべて MANIFEST.MF があり、これには Import-Package ステートメントの独自の (正確な) リストがあります。
ただし、(Maven とバンドル プラグインを使用して) プロジェクトをビルドすると、特定のクラスへの参照を解決できないため、エラーが報告されます。具体的には、エラーは次のとおりです。
Unresolved references to [com.sun.tools.javac, javax.naming, javax.naming.spi, javax.servlet, javax.servlet.http, javax.sql, javax.transaction.xa]
これらのエラーはすべて com.springsource.org.h2-1.0.71.jar から発生し、これらのパッケージはすべてその jar のマニフェストにインポートされます。
理解できません:
- これらのパッケージが com.springsource.org.h2-1.0.71.jar の MANIFEST>MF に既にインポートされている場合、Maven バンドル プラグインが不平を言うのはなぜですか
- 問題が com.springsource.org.h2-1.0.71.jar からのみ発生するのはなぜですか? com.springsource.org.apache.lucene.search-2.3.2.jar には MANIFEST.MF に Import-Package のエントリもいくつかありますが、その特定の jar を削除しようとすると、ビルドは正常に完了しますか?
2点目については、調べてみたところ、パターンがあるような気がします。com.springsource.org.apache.lucene.search-2.3.2.jar がそのマニフェストで指定するすべてのインポートは、同じく指定されている com.springsource.org.apache.lucene-2.3.2.jar によって満たされています。 Bundle-Classpath で。
com.springsource.org.apache.lucene-2.3.2.jar (Bundle-Classpath 上にある) によって満たされている com.springsource.org.h2-1.0.71.jar の依存関係は、ただし、エラー メッセージには、Bundle-Classpath の jar によって満たされない依存関係がエラー メッセージにリストされています。
何が起こっているのかよくわかりません。Bundle-Classpath で指定される jar ファイルに関するルールは何ですか? マニフェストのインポート (Import-Package で指定されている場合でも) 要素は、メイン プロジェクトの pom にリストする必要がありますか? それとも、これはMavenバンドルプラグインが強制しているものですか? 後者の場合、強制から逃れる方法はありますか?