java - 在 Equinox OSGi 包缓存中提取的类文件?
问题描述
我有一个由多个自定义插件构建的 RCP 应用程序。
对于几个较低级别(但不是最低级别)的插件,所有的类文件都从插件 jar 中提取到 osgi.configuration.area 中 org.eclipse.osgi 文件夹下的 OSGi 包缓存中.
使用该配置区域的第一次启动很慢。随后的发布速度很快。我不知道是把这种缓存归咎于前者,还是把它归咎于后者。
问题
- 我可以控制是否将插件的类提取到缓存中吗?
- 我想要吗?
细节
大多数插件都不会发生这种情况。大小似乎无关紧要。它不是最低级别的插件。它不是包含 Bundle-NativeCode 的插件集。
解决方案
如果插件使用 FileLocator.toFileURL API,这可能会解压缩代码。Javadoc 说:
可以将 URL 的内容提取到文件系统上的缓存中以获取文件 URL。
有时您可以toFileURL
通过仅使用URL.openStream
方法读取资源而无需解包来避免调用。JFace 等 APIImageDescriptor.createFromURL
也不需要文件 URL。
推荐阅读
- python-3.x - 强制客户端等待来自 azure 函数的响应
- python - 如何过滤数据框中的行以仅获取 3 个最受欢迎的数据并删除其他未使用的数据?
- r - 如何在 R 中将 MM/DD/YY 转换为 YYYY-MM-DD?
- javascript - onChange 事件影响字符串长度(消毒剂)
- oauth-2.0 - Google G Suite 用户的密码验证
- c# - 如何获得单选按钮的价值?
- android-layout - 当按钮内还有这么多空间时,为什么右边的文本被剪掉了?
- python - 获取字符串中的所有表情符号
- python - 将饼图更改为圆环图保持饼图
- html - 在 R Shiny 中的图标上添加悬停消息