怎样才能在Eclipse调试OSGi的插件的时候自己设置Bundle-Classpath中相对路径的根目录
石榴刺猬 2007-01-11 05:26:14 基于OSGi的一个项目,目录结构如下:
project
--release
----bundles (OSGi的实现以及其它插件)
----configuration (OSGi的配置目录)
----etc (项目的系统配置目录)
----lib (外部库)
----... (其它相关资源目录)
--src
----pluginA
------bin
------src
----pluginB
------bin
------src
编译后的插件放在bundles下,所有外部库放在lib下。
插件pluginA引用了一个外部的库,例如log4j.jar。那么按照OSGi的要求,插件pluginA的MANIFEST.MF中的Bundle-Classpath需要加入该库的位置。
这里就存在一个问题:库的路径如果用相对路径的话,那么在调试期间的根目录是project/src/pluginA/src,但是发布后运行时的根目录其实是project/release/bundles。我不想在调试和发布的时候手工修改MANIFEST.MF中的内容, 那么解决办法有这么几种:
在Bundle-Classpath中用绝对路径;
把lib目录复制到project/src/pluginA/src下面;
但是这两个办法都不好。如果能在调试期间把Bundle-Classpath相对路径的根目录改成project\release\lib,那就很方便调试和发布了。 我看了一下Equinox的代码,貌似是把Bundle的位置作为根了,可以改的吗?