代码之家  ›  专栏  ›  技术社区  ›  Deniz Acay

OSGi束的相对路径

  •  1
  • Deniz Acay  · 技术社区  · 16 年前

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

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

    3 回复  |  直到 16 年前
        1
  •  3
  •   Andrew Niefer    16 年前

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

    您可以通过自己获取输入流并调用bundleContext installBundle(string,input stream)来安装包。

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

    或者,您可以获取系统包(bundleContext.getBundle(0)),并使用文件定位器(从org.eclipse.equinox.common)在磁盘上找到它。

        2
  •  2
  •   omerkudat    16 年前

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

    new File("./bundles").getAbsolutePath();
    

    希望这有帮助。

        3
  •  0
  •   Deniz Acay    16 年前

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

    推荐文章