1

我已经安装了Apache Karaf 2.3.0。我需要安装的包之一使用javax.servlet.http包中的类。当我尝试安装捆绑包时,它给了我错误消息:

karaf@root> 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包是从:mvn: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

编辑:

我忘了说重要的事情。我还将CXF更新到2.7.0版本,CXF 是引入 Servlet 3.0 依赖关系的版本。这是来自依赖树的图:

在此处输入图像描述

也许会给你一些关于如何解决这个问题的想法?我唯一能想到的就是回到CXF 2.6.x

4

2 回答 2

1

如果你的包真的需要比 2.5 更新的东西,你可能会在 Karaf 2.3.0 上运行它时遇到问题。Karaf 2.3 使用基于 Servlet 2.5 的 Jetty 7.6.7。它不支持任何新的基于 Servlet 3 的 API 等。您可以升级 servlet-api 包,它可能会工作,但如果您的包/应用程序使用任何 Servlet 3 功能,它可能无法工作。

Karaf 3 将升级到支持 Servlet 3 的 Jetty 8.1。Karaf 社区将非常感谢任何帮助测试和解决这个问题。:-)

于 2012-11-08T17:43:19.327 回答
0

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

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>
于 2012-11-08T17:37:35.053 回答