【问题标题】:missing requirement osgi.wiring.package; (osgi.wiring.package=org.apache.http)缺少要求 osgi.wiring.package; (osgi.wiring.package=org.apache.http)
【发布时间】:2016-01-27 19:40:01
【问题描述】:

我想在我的项目中使用 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:无法安装功能测试/0.0.0:
无法在功能 test-1.0-SNAPSHOT 中启动捆绑 mvn:ttt/test/1.0-SNAPSHOT:捆绑 ttt.test [234] 中未解决的约束:无法解析 234.0:缺少要求 [234.0] osgi.wiring.package ; (osgi.wiring.package=org.apache.http)

我认为“构建”中存在一些错误,但我不知道如何解决。

【问题讨论】:

    标签: java maven


    【解决方案1】:

    如果您正在制作kar 文件,则需要安装 HTTP 客户端包或将​​其放入您的 feature.xml 文件中

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

    【讨论】:

    • 这可能是正确的答案,但请添加更多细节以进一步澄清它。
    【解决方案2】:

    我想这个问题与osgi有关,而你的osgi容器是基于Karaf的(因为你说的是​​'功能')。

    它与你的包的构建无关:你还应该在你的容器(karaf)中部署你需要的运行时依赖项:在功能测试中,为你在运行时需要的每个包添加一个&lt;bundle&gt; 标签(依赖= true),或者向已安装这些捆绑包的功能添加依赖项。

    此外,您不应该 Export-Package org.apache.http.HttpEntity :它不是一个包,而是一个类,并且包“org.apache.http”是由另一个包提供的。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-30
        • 2016-02-18
        • 2019-09-15
        • 2015-07-28
        • 1970-01-01
        • 2015-05-26
        • 2017-01-03
        相关资源
        最近更新 更多