我想在我的项目中使用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;有一些错误,但我不知道解决这个问题。
答案 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