2012-07-27 66 views
2

我创建了两个OSGi包B1和B2(Equinox)。访问其他osgi包中的静态资源?

在捆绑B1中我有一个根目录下的目录WebContent/WEB-INF/WEB.xml

source.. = src/ 
bin.includes = META-INF/,\.,\WebContent 

在捆绑包B2的清单中,我添加了捆绑包B1作为依赖项。我想使WebContent和它的子树可见的捆绑B2。

注:

  1. 在B1的清单,我不能出口WebContent,因为它不是在src文件夹中。
  2. 如果我将WebContent/WEB-INF放在src文件夹中,我仍然不能将它导出为WebContent/WEB-INF,因为它不是有效的软件包名称。
+0

将B1选为一个片段吗? – 2012-07-27 06:48:31

+0

对不起,没有问题,但[这篇文章](http://forum.springsource.org/archive/index.php/t-73025.html)似乎是解决相同的问题 – Miquel 2012-07-27 06:49:50

+0

@BjörnPollex:不,B1必须是一个捆绑包。 – 2012-07-27 08:10:39

回答

3

您能否获得对B1包的引用?如果是的话,我认为你可以使用getEntry。例如。

Bundle b1 = /* get bundle here */ 
URL urlToWebXml = b1.getEntry("WebContent/WEB-INF/WEB.xml"); 

'get bundle here'可能通过您可能存储BundleContext的B2 Bundle激活器来访问Bundle。

+2

路径中的前导斜杠不是必需的(实际上严格不应该在那里)。否则答案是好的。 – 2012-07-27 18:41:36

+0

谢谢尼尔,我编辑了答案。当我写出答案时,我不确定是否包含斜线; Javadocs说任何字符串都是相对于根的,所以我认为包含它是多余的。 – 2012-07-28 13:55:03