如何使用Apache karaf 3
创建捆绑包?有人知道吗?
我试过Eclipse
:
我导出一个带有清单文件的jar ...以及为什么我有这个错误:
karaf@root(dev)> feature:repo-add file:///C:/Users/xx/Downloads/apache-kara
f-3.0.1/apache-karaf-3.0.1/deploy/features.xml
Adding feature url file:///C:/Users/xx/Downloads/apache-karaf-3.0.1/apache-
karaf-3.0.1/deploy/features.xml
karaf@root(dev)> feature:install greeter_server
Error executing command: Jar is not a bundle, no Bundle-SymbolicName file:///C:/
Users/xx/Downloads/apache-karaf-3.0.1/apache-karaf-3.0.1/deploy/nebula_cdat
etime_VF4.jar
karaf@root(dev)>
这是我的features.xml
:
<features>
<feature name='greeter_server' version='1.0'>
<bundle>file:///C:/Users/xx/Downloads/apache-karaf-3.0.1/apache-karaf-3.0.1/deploy/nebula_cdatetime_VF4.jar</bundle>
</feature>
</features>
答案 0 :(得分:1)
如果要从eclipse rcp导出捆绑包或声明性服务,则必须使用 文件 - &gt;出口 - &gt;插件开发 - &gt;可解决的插件和片段 ,如here所述。
显然,您要作为捆绑导出的项目必须具有完整的清单文件。要了解项目应该具有正确的osgi友好结构,您可以使用文件→新建→其他...→插件开发→插件项目在eclipse rcp中创建测试插件项目< / em>菜单。在向导中,您可以选择使用激活器创建一个简单的osgi包。结果是你的新osgi包的骨架。
答案 1 :(得分:0)
我认为更简单,更清洁的方法是使用Maven。通过这种方式,您可以生成正确的OSGI就绪JAR,可以快速加载到Karaf中。 在这种情况下,pom.xml文件应该是这样的:
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>your.group
<artifactId>artifact-123</artifactId>
<name>Karaf OSGI Module</name>
<packaging>bundle</packaging>
....
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions />
</configuration>
</plugin>
...
</plugins>
</build>
...
</project>
这种POM文件将生成一个兼容OSGI的JAR,您不必弄乱绝对文件名。在feature.xml中,我们可以像这样声明模块:
<bundle>mvn:your.group/artifact-123/${pom.version}</bundle>