来自OSGi包的相对路径

时间:2010-06-21 11:16:01

标签: java file path osgi

我有一个更新程序包,可以在特定文件夹“bundle”中查找,并检查新的bundle以安装和更新当前安装的bundle。在父目录内,OSGi框架位于“/ framework”目录中,updater bundle位于“/ system”目录中,需要检查的目录是同一父目录中的“/ bundles”目录。在更新程序包中,创建了一个具有相对路径的File对象,但它不使用“./bundles”字符串,我不知道该路径应该与哪个jar文件相关。我将不胜感激任何有关此问题的见解或信息。 谢谢, 德尼兹

编辑:已经想通了。看起来路径是根据我用来启动Equinox的Ruby脚本解决的。所以解析路径是一个目录,我通过使用Ruby系统传递一个“-console”标志来启动Equinox。 谢谢你的回答,Deniz

3 个答案:

答案 0 :(得分:3)

针对当前工作目录执行新文件(“./ bundles”)resolves

您可以通过自己获取输入流并调用BundleContext#installBundle(String,InputStream)来安装捆绑包。

OSGi本身不对文件系统布局做任何假设,或者捆绑包甚至在磁盘上。 但是,如果您使用Equinox作为框架,则可以针对“osgi.install.area”解析相对路径。 Location service可以给你这个。然后使用绝对路径安装捆绑包。

或者,你可以获得System Bundle(BundleContext.getBundle(0)),并使用FileLocator(来自org.eclipse.equinox.common)在磁盘上找到它。

答案 1 :(得分:2)

取决于您的OSGi配置和实施。它可能与许多地方相关,最可能的是框架位置。为什么不通过创建具有相对路径的文件并检查

的值来进行测试
new File("./bundles").getAbsolutePath();

希望这会有所帮助。

答案 2 :(得分:0)

已经想通了。看起来路径是根据我用来启动Equinox的Ruby脚本解决的。所以解析路径是一个目录,我通过使用Ruby系统传递一个“-console”标志来启动Equinox。 谢谢你的回答,Deniz