-1

如何使用创建捆绑包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>  
4

2 回答 2

1

当您想从eclipse rcp导出捆绑包或声明性服务时,您必须使用文件 -> 导出 -> 插件开发-> 可部署插件和片段,如此处所述。

显然,您要导出为捆绑包的项目必须具有声音清单文件。要了解您的项目应该具有的正确 osgi 友好结构,您可以使用文件 → 新建 → 其他... → 插件开发 → 插件项目菜单在 eclipse rcp 中创建一个测试插件项目。在向导中,您可以选择使用激活器创建一个简单的 osgi 包。结果是您的新 osgi 包的骨架。

于 2014-06-11T20:48:57.140 回答
0

我认为更简单和更清洁的方法是使用 Maven。通过这种方式,您可以生成正确的 OSGI 就绪 JAR,该 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>
于 2014-07-09T12:24:52.573 回答