2012-11-08 68 views
1

我已经安装Apache Karaf 2.3.0。我需要安装的其中一个软件包使用javax.servlet.http包中的类。当我尝试安装它给我的错误信息包:MVN:Apache Karaf中的javax.servlet.http包2.3.0

[email protected]> ERROR: Bundle com.groupgti.esb.purge [207] Error starting mvn:com.groupgti.esb/esb.purge/1.0.0 (org.osgi.framework.BundleException: Unresolved constraint in b 
undle com.groupgti.esb.purge [207]: Unable to resolve 207.0: missing requirement [207.0] osgi.wiring.package; (osgi.wiring.package=com.groupgti.esb.cxf.interceptors) [cau 
sed by: Unable to resolve 212.0: missing requirement [212.0] osgi.wiring.package; (&(osgi.wiring.package=javax.servlet.http)(version>=2.6.0)(!(version>=3.0.0)))]) 
org.osgi.framework.BundleException: Unresolved constraint in bundle com.groupgti.esb.purge [207]: Unable to resolve 207.0: missing requirement [207.0] osgi.wiring.package 
; (osgi.wiring.package=com.groupgti.esb.cxf.interceptors) [caused by: Unable to resolve 212.0: missing requirement [212.0] osgi.wiring.package; (&(osgi.wiring.package=jav 
ax.servlet.http)(version>=2.6.0)(!(version>=3.0.0)))] 
     at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826) 
     at org.apache.felix.framework.Felix.startBundle(Felix.java:1868) 
     at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191) 
     at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295) 
     at java.lang.Thread.run(Thread.java:662) 

javax.servlet.http包从出口org.apache.geronimo.specs/Geronimo的servlet_2.5_spec/1.1.2系统插件。问题是它的版本是2.5但是我的软件包至少需要2.6.0。是否有解决方法或更新geronimo-servlet更高的版本,将与我的软件包兼容? (这是系统包)。

其他信息:

CXF Version: 2.7.0 
Camel Version 2.10.2 

编辑:

我忘了提及最重要的事情。我也更新了CXF2.7.0版本和CXF是介绍Servlet 3.0的依赖关系的。这是从依赖树图:

enter image description here

也许会给你如何解决此得到一些想法?我唯一能想到的就是回到CXF 2.6.x

回答

1

如果捆绑真正需要的东西比2.5更新,你可能对Karaf 2.3.0运行它的问题。 Karaf 2.3使用基于Servlet 2.5的Jetty 7.6.7。它不支持任何较新的基于Servlet 3的API等。你可以升级servlet-api包,它可以工作,但是如果你的bundle/app使用了Servlet 3的任何功能,它可能无法工作。

卡拉夫3将升级到Jetty 8.1,它支持Servlet 3的东西。任何帮助测试并得到这一点的人都会受到Karaf社区的高度赞赏。 :-)

+0

我编辑了我的问题,请你看一下吗? –

+0

有一堆选项。最好转到[email protected]列表。您可以排除jetty和servlet-api deps,并将deps添加到您想要/需要的版本中。你可以让maven-bundle-plugin在生成MANIFEST等时使用更广泛的范围.... –

0

您真的需要使用geronimo servlet规范吗?试试这个替换它:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
+0

这是行不通的,因为servlet捆绑应该由pax-web在这一点上提供,而2.3的Karaf使用仍然绑定到Servlet 2.5的Pax-Web 1.1.x,Karaf 3.0将支持Pax -Web 2.1甚至3.0完全支持Servlet 3.0 –