缺少要求osgi.wiring.package; (osgi.wiring.package = org.apache.http)

时间:2016-01-27 19:40:02

标签: java maven

我想在我的项目中使用HttpClient。

pom.xml

............. 
<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient-osgi</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.4</version>
        </dependency>
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <_wab>src/main/webapp/</_wab>
                        <Bundle-SymbolicName>
                            ${project.groupId}.${project.artifactId}
                        </Bundle-SymbolicName>
                        <Import-Package>
                            *,!com.google.gson
                        </Import-Package>
                        <Embed-Dependency>gson</Embed-Dependency>
                        <Export-Package>
                            org.apache.http.HttpEntity
                        </Export-Package>
                        <Web-ContextPath>${web.context}</Web-ContextPath>
                    </instructions>
                </configuration>
            </plugin>
..................

错误消息:

java.lang.IllegalStateException: Can't install feature test/0.0.0:
Could not start bundle mvn:ttt/test/1.0-SNAPSHOT in feature(s) test-1.0-SNAPSHOT: Unresolved constraint in bundle ttt.test [234]: Unable to resolve 234.0: missing requirement [234.0] osgi.wiring.package; (osgi.wiring.package=org.apache.http)

我认为&#34; build&#34;有一些错误,但我不知道解决这个问题。

3 个答案:

答案 0 :(得分:0)

我想这个问题与osgi有关,你的osgi容器是基于Karaf的(因为你说的是​​&#39; feature&#39;)。

它与您的软件包的构建无关:您还应该在容器中部署所需的运行时依赖项(karaf):在功能测试中,为您需要的每个软件包添加<bundle>标记在运行时(使用dependency = true),或者为已安装这些包的功能添加依赖项。

此外,你不应该使用Export-Package org.apache.http.HttpEntity:它不是一个包,而是一个类,以及包&#34; org.apache.http&#34;由另一个包提供。

答案 1 :(得分:0)

更好的建议是使用httpclient而不是httpclient-osgi,因为httpclient-osgi是一个bundle,它意味着在你的bundle启动之前,你需要启动httpclient-osgi,它会带来一些问题(你还需要把httpclient-osgi放进去)特征)。如果你的函数只是使用一个http-client,使用httpclient就足够了。只需要在源代码中做依赖就可以了〜

答案 2 :(得分:-1)

如果您要创建feature.xml文件,则需要安装HTTP客户端捆绑包或将其放在kar文件中

bundle:install mvn:org.apache.httpcomponents/httpclient-osgi/4.5.1