Adobe CQ5 インストールで servlet-api バージョン 3 を使用しようとしていますが、あまり成功していません。
javax.servlet パッケージ (バージョン 2.5) をエクスポートするバンドルが既にあるので、バージョン 3.1.0 でバンドルをデプロイしました。このバンドルは問題なく起動します。
問題は、API v3 を使用するバンドルを開始することです。完全には理解できない OSGi 例外が発生しています。
POST /system/console/bundles/250 HTTP/1.1] cqse-httpservice %bundles.pluginTitle: 開始できません (org.osgi.framework.BundleException:
モジュール 250.9 を既存のインポート 266.0.javax.servlet 間で解決するときのパッケージ 'javax.servlet' の制約違反
[[250.9] パッケージのせい。(&(package=javax.servlet)(バージョン>=3.0.0)(!(バージョン>=4.0.0)))]
制約 22.1.javax.servlet を使用します
[[250.9] パッケージのせい。(package=com.day.cq.wcm.foundation.forms), [210.0] パッケージ; (&(package=org.apache.sling.api.resource)(version>=2.0.0)), [93.0] パッケージ; (&(package=javax.servlet)(バージョン>=2.4.0))])
- bundle 266 exports javax.servlet v=3.10 (これをインストールしました)
- bundle 22 exports javax.servlet v=2.5 (CQ5 提供)
- bundle 250 (mine) は、266 から javax.servlet,version=[3.0,4) をインポートします。210 と 93 からパッケージもインポートします。
- bundle 210 imports javax.servelt v=2.5 from 22 (ただし、マニフェストのインポートにはバージョンがありません。これが問題なのでしょうか?)
- バンドル 93 には javax.servlet があります。Import-package の version="2.4"。しかし、何とか (22) から javax.servlet,version=2.5.0 に解決しました。
問題はバンドル 250 の依存関係にあるようですが、何が問題なのかわかりません。知る限り、パッケージの 2 つのバージョンは OSGi コンテナーに共存できます。バンドル 210 と 93 は問題なく実行されています。