我有一个由多个自定义插件构建的 RCP 应用程序。
对于几个较低级别(但不是最低级别)的插件,所有类文件都从插件 jar 中提取到 OSGi 中osgi.configuration.area 中 org.eclipse.osgi 文件夹下的包缓存。
使用该配置区域的第一次启动很慢。随后的发布速度很快。我不知道是将前者归咎于此缓存,还是将其归功于后者。
问题
- 我可以控制是否将插件的类提取到缓存中吗?
- 我想要吗?
详情
大多数插件不会发生这种情况。大小似乎并不重要。它不是最低级别的插件。它不是包含 Bundle-NativeCode 的插件集。
最佳答案
如果插件使用 FileLocator.toFileURL API,这可能会解压代码。 Javadoc 说:
The contents of the URL may be extracted into a cache on the file-system in order to get a file URL.
有时您可以避免调用toFileURL
,只需使用URL.openStream
方法来读取资源而无需解包。 JFace ImageDescriptor.createFromURL
等 API 也不需要文件 URL。
关于java - 在 Equinox OSGi 包缓存中提取的类文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58771622/