karaf 3用OSGi,如何安装捆绑

时间:2014-06-01 13:34:36

标签: java eclipse osgi apache-karaf karaf

如何使用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>  

2 个答案:

答案 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>