jar包及其在ServiceMix-karaf中的类路径

时间:2012-03-28 22:51:13

标签: osgi bundle classpath apache-karaf apache-servicemix

我正在开发2个jar文件(jar1和jar2 - 2个罐子的pom.xml中的包装类型是jar)并将它们安装到serviceMix中。 Jar1将使用jar2中的一些包。

在manifest.mf文件中,我使用了jar1和jar2的导入和导出。安装到serviceMix 4.3.0后。一切都很顺利。从jar 1开始,我可以在jar2中使用包(我知道通过调试代码)。但问题出在这里:

The structure of Jar2: 
  jar2:/ 
        . 
        com 
               abc 
                   .......(classes) 
        META-INF 
               MANIFEST.MF 
        FactoryContext.xml 

The short version of jar2's MANIFEST.MF is 
   Bundle-ClassPath: . 
   Bundle-Name: jar2 
   Bundle-SymbolicName: jar2 
   Bundle-Version: 1.0.0 
   Export-Package: com.abc 
   Import-Package: xyz 
   Tool: Bnd-1.50.0 

Jar1调用Jar2的方法,该方法使用下面的语句

  

context = new ClassPathXmlApplicationContext(" FactoryContext.xml");

无论何时进入此语句,它总是抛出异常,说FactoryContext.xml不存在。 (我的客人这个文件不在类路径中)

你知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

我还在ServiceMix论坛上发布了我的问题,我得到了Freeman-2的答案。 这是答案

You can try to put  FactoryContext.xml in a unique folder like META- 
INF/MyFactoryContext/FactoryContext.xml, then jar2 also export package   
META-INF.MyFactoryContext, and jar1 import package META- 
INF.MyFactoryContext, and  then should be able to use code like 
context = new ClassPathXmlApplicationContext("META-INF/ 
MyFactoryContext/FactoryContext.xml"); 
in jar1.

这是链接 http://servicemix.396122.n5.nabble.com/question-about-jar-bundle-and-classpath-td5602052.html