2013-05-17 130 views
4

我有一个OSGi兼容的包(jar),我想在其中添加一个依赖项的jar。我想添加的依赖关系是数据库驱动程序。该jar不存在于我正在使用的Karaf容器的lib文件夹中,并且无法手动添加它。我只能访问部署文件夹,我可以在其中部署捆绑软件。我使用maven bundle插件来打包我的包。所以,我想知道是否有方法在我的包中添加依赖关系jar。目前,我正在通过打开7zip中的包并通过将jar复制到jar中来手动添加jar到工具包中,并且它工作正常。我尝试使用<embed-dependency>标记,但是在做完之后,捆绑包不会被部署。有没有任何的方式来做到这一点?如何使用maven bundle插件在OSGi包中包含一个依赖jar包?

以下是我要在包中添加pom.xml依赖:

<dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <version>1.3.158</version> 
    </dependency> 

以下是pom.xml构建标签:

<build> 
    <defaultGoal>install</defaultGoal> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <extensions>true</extensions> 
      <configuration> 
       <instructions> 
        <Export-Package> 
         com.ct.service.userService.*, 
         org.h2.* 
        </Export-Package> 
        <Import-Package> 
         *, 
         org.codehaus.jackson.jaxrs 
        </Import-Package> 
        <Embed-Dependency>h2</Embed-Dependency> 
       </instructions> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

我收到以下错误,当我尝试部署它:

ERROR: Bundle com.ge.dsp.userService [205] Error starting file:D:Karaf/deploy/userService-0.0.1-SNAPSHOT.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle com.ge.dsp.userService [205]: Unable to resolve 205.2: missing requirement [205.2] osgi.wiring.package; (osgi.wiring.package=org.apache.lucene.analysis)) 

org.osgi.framework.BundleException: Unresolved constraint in bundle com.ct.service.userService [205]: Unable to resolve 205.2: missing requirement [205.2] osgi.wiring.package; (osgi.wiring.package=org.apache.lucene.analysis) 
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826) 
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1868) 
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191) 
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295) 
    at java.lang.Thread.run(Thread.java:662) 
+0

什么是您会收到错误消息,当您尝试和部署捆绑? – DB5

+0

@ DB5,在问题中添加了错误消息。 –

回答

2

看起来像我n eeded部署与我的包沿着h2-1.3.158.jar,并添加做些编辑在pom.xml如下:

<build> 
<defaultGoal>install</defaultGoal> 
<plugins> 
    <plugin> 
     <groupId>org.apache.felix</groupId> 
     <artifactId>maven-bundle-plugin</artifactId> 
     <extensions>true</extensions> 
     <configuration> 
      <instructions> 
       <Export-Package> 
        com.ct.service.userService.*, 
        <!--org.h2.* No need to export these dependency --> 
       </Export-Package> 
       <Import-Package> 
        *, 
        org.codehaus.jackson.jaxrs, 
        org.h2    <!-- Needed to import the dependencies. --> 
       </Import-Package> 
       <!--<Embed-Dependency>h2</Embed-Dependency> No need of embedding --> 
      </instructions> 
     </configuration> 
    </plugin> 
</plugins> 

+0

您能否解释“我需要将h2-1.3.158.jar与我的包一起部署?”?我面临同样的错误,但简单地编辑pom.xml对我来说不起作用。 –

相关问题