java - 在 Equinox OSGi 包缓存中提取的类文件?

标签 java eclipse-plugin osgi eclipse-rcp equinox

我有一个由多个自定义插件构建的 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/

相关文章:

java - OSGI 是一个好的选择吗?

java - 在 Java 中测试两个 JSON 对象的相等性并忽略子顺序

tomcat - Sysdeo Tomcat DevLoader - Java 类的热部署导致整个应用程序重新启动

java - 枚举示例说明

java - 从 Eclipse 插件编辑 web.xml 的 API?

eclipse - eclipse 中的.metadata\.log 错误

java - Camel Jetty 中的自定义基本身份验证

osgi - 哪个在 SCR 运行时被称为第一个激活函数或绑定(bind)函数

java.lang.ClassCastException : com. sun.proxy.$Proxy8 无法转换为 org.openqa.selenium.internal.WrapsDriver

java - 滚动 BufferedImage Java