osgi LinkageError问题

时间:2014-01-17 06:37:19

标签: java osgi osgi-bundle apache-servicemix

我正在与可怕的java.lang.LinkageError斗争。这就是我想要做的。 Bundle A由一个类TestA组成,它调用类B中的方法,在Bundle B中托管。作为方法调用的一部分,TestA将Solrj类(org.apache.solr.common.SolrInputDocument)传递给TestB。这是pom配置。

捆绑B pom


<plugin>
   <groupId>org.apache.felix</groupId>
   <artifactId>maven-bundle-plugin</artifactId>
   <version>2.0.1</version>
   <extensions>true</extensions>
   <configuration>
      <instructions>
         <Export-Package>com.test.solr.api;version=1.1.0, 
                                                        org.apache.solr.common.*, 
                                                        org.apache.solr.client, 
                                                        org.apache.solr.client.solrj;</Export-Package>
         <Import-Package>com.test.model.*;version="[1.0.0,2.0.0)", 
                                                        *;resolution:=optional</Import-Package>
         <Embed-Dependency>solr-solrj,zookeeper,httpcore,httpmime,httpclient,commons-collections,commons-lang,commons-collections,commons-io,commons-logging;scope=compile|runtime</Embed-Dependency>
         <Embed-Transitive>true</Embed-Transitive>
         <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
         <Bundle-Version>${project.version}</Bundle-Version>
         <Bundle-ClassPath>.,{maven-dependencies}</Bundle-ClassPath>
         <Include-Resource>{maven-resources}, {maven-dependencies}</Include-Resource>
      </instructions>
   </configuration>
</plugin>

捆绑一个pom


<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.0.1</version>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Export-Package>com.test.postprocess.api;version="[1.0.0,2.0.0)",</Export-Package>
            <Import-Package>com.test.solr.api;version="[1.0.0,2.0.0)", 
                                                        javax.jws, 
                                                        javax.wsdl, 
                                                        javax.xml.bind, 
                                                        javax.xml.bind.annotation, 
                                                        javax.xml.namespace, 
                                                        javax.xml.ws, 
                                                        META-INF.cxf, 
                                                        META-INF.cxf.osgi, 
                                                        org.apache.cxf.bus, 
                                                        org.apache.cxf.bus.spring, 
                                                        org.apache.cxf.bus.resource, 
                                                        org.apache.cxf.configuration.spring, 
                                                        org.apache.cxf.resource, 
                                                        org.apache.cxf.jaxws, 
                                                        org.apache.cxf.transport.http, 
                                                        !org.jvnet.staxex, 
                                                        !org.relaxng.datatype, 
                                                        !com.sun.javadoc, 
                                                        !com.caucho.burlap., 
                                                        org.apache.solr., 
                                                        org.w3c.dom, 
                                                        org.apache.xpath.jaxp, 
                                                        ;resolution:=optional</Import-Package>
            <Embed-Dependency>commons-codec,xstream,commons-io,httpcore,httpclient,httpmime;scope=compile|runtime</Embed-Dependency>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
            <Bundle-Version>${project.version}</Bundle-Version>
            <Bundle-ClassPath>.,{maven-dependencies}</Bundle-ClassPath>
            <Include-Resource>{maven-resources}, {maven-dependencies}</Include-Resource>
        </instructions>
    </configuration>
</plugin>
如您所见,我正在捆绑包B中导出org.apache.solr.common。,org.apache.solr.client和org.apache.solr.client.solrj包,该包正在捆绑中导入A.

但是我得到了以下运行时异常。

java.lang.LinkageError:加载器约束违规:加载器(org / apache / felix / framework / ModuleImpl $ ModuleClassLoaderJava5的实例)以前为名称为“org / apache / solr / common /”的其他类型启动加载SolrInputDocument“

不确定我缺少什么。我正在使用servicemix 4.4.0。

任何指针都将受到高度赞赏。

-Thanks,

0 个答案:

没有答案