我最近发现Eclipse加载的插件jar不会检索文件锁。这是一个令人惊讶的原因,当我运行自制应用程序时,特定的罐子被锁定并且无法删除。 我很好奇如何实现这一目标。我的第一个想法是,equinox将罐子复制到一个单独的目录中,但这需要一些时间我猜。我找不到这样的目录
希望有人有个主意......
答案 0 :(得分:4)
所有OSGi框架(包括Equinox)都有一个所谓的“存储”文件夹,其中包含框架和包的持久状态。默认情况下,框架确实将任何已安装的软件包复制到该文件夹中。在Equinox中,存储文件夹的默认位置是configuration/org.eclipse.osgi
,但是配置可以覆盖它。
还有一个特殊功能,可以在不复制的情况下安装捆绑包。这是通过为位置网址添加前缀reference:
来完成的。例如,如果您要安装文件/home/neil/mybundle.jar
,则可以调用:
context.installBundle("reference:file:/home/neil/mybundle.jar");
请注意,引用URL方案不是OSGi规范的一部分,尽管它至少受到Equinox和Felix(以及可能的其他框架实现)的支持。