首页 > 解决方案 > 在 Equinox OSGi 包缓存中提取的类文件?

问题描述

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

对于几个较低级别(但不是最低级别)的插件,所有的文件都从插件 jar 中提取到 osgi.configuration.area 中 org.eclipse.osgi 文件夹下的 OSGi 包缓存中.

使用该配置区域的第一次启动很慢。随后的发布速度很快。我不知道是把这种缓存归咎于前者,还是把它归咎于后者。

问题

细节

大多数插件都不会发生这种情况。大小似乎无关紧要。它不是最低级别的插件。它不是包含 Bundle-NativeCode 的插件集。

标签: javaeclipse-pluginosgieclipse-rcpequinox

解决方案


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

可以将 URL 的内容提取到文件系统上的缓存中以获取文件 URL。

有时您可以toFileURL通过仅使用URL.openStream方法读取资源而无需解包来避免调用。JFace 等 APIImageDescriptor.createFromURL也不需要文件 URL。


推荐阅读