我想在Adobe CQ5安裝中使用servlet-api版本3,但沒有取得太大的成功。在Adobe CQ5中使用servlet-api 3包CQ5
已經有一個導出javax.servlet包(版本2.5)的包,所以我部署了一個包含版本3.1.0的包。這個包開始OK。
問題是啓動使用api v3的軟件包。我得到一個OSGi例外,我不能完全理解:
POST /系統/控制檯/包/ 250 HTTP/1.1] cqse-的HTTPService%bundles.pluginTitle:無法啓動(org.osgi.framework.BundleException:
約束違反爲包 '的javax.servlet' 現有進口266.0.javax.servlet
歸咎於[[250.9]包之間解析模塊250.9時;(&(包=的javax.servlet)(版本> = 3.0.0)(!(version> = 4.0.0)))]
and uses constr aint 22.1.javax.servlet
BLAMED ON [[250.9] package; (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))])
- 束266出口的javax.servlet V = 3.10(I安裝此一)
- 束22周的出口的javax .servlet v = 2.5(由CQ5提供)
- 束250(礦)進口的javax.servlet,版本= [3.0,4)從266.它還出口包210和93
- 束210進口的javax。 servelt v = 2.5 from 22(但是在清單中導入沒有版本,也許這是問題?)
- bundle 93 has javax.servlet;導入包中的版本=「2.4」。但它以某種方式從(22)中解析爲javax.servlet,version = 2.5.0。
該問題似乎是圍繞捆綁250的依賴關係,但林不知道是什麼問題。 AFAIK包的兩個版本可以共存於一個OSGi容器中。捆綁210和93運行沒有問題。
本文列舉了深入的使用違反約束是什麼,爲什麼它可以是難以追查。 http://njbartlett.name/2011/02/09/uses-constraints.html希望幫助您跟蹤您的問題。 –