在Equinox OSGibundle缓存中提取的类文件



我有一个由多个自定义插件构建的RCP应用程序。

对于一些较低级别(但不是最低级别(的插件,所有文件都会从插件jar中提取到OSGi.configuration.are.中org.eclipse.OSGi文件夹下的OSGi捆绑包缓存中

使用该配置区域的首次发射速度较慢。后续发布速度很快。我不知道是将前者归咎于这种缓存,还是将后者归功于它。

问题

  • 我可以控制插件的类是否被提取到缓存中吗
  • 我想吗

详细信息

大多数插件都不会出现这种情况。尺寸似乎无关紧要。它不是最低级别的插件。它不是一组包含Bundle NativeCode的插件。

如果插件使用FileLocator.toFileURL API,则可能会解包代码。Javadoc说:

URL的内容可以提取到文件系统,以便获得文件URL。

您有时可以避免调用toFileURL,只需使用URL.openStream方法读取资源,而无需拆包。像JFaceImageDescriptor.createFromURL这样的API也不需要文件URL。

Bundle jar文件存储在那里。如果捆绑包的清单具有Eclipse-BundleShape: dir,Equinox将通过将jar解压缩到目录中来实现这一点。

安装/更新/卸载捆绑包后的第一次启动可能比随后的启动慢,因为Equinox必须运行解析器来计算捆绑包的包解析。这是缓存的,以使后续启动更快。

最新更新