为什么 Eclipse 中的某些 OSGi 包被提取到 directoris 而不是打包为 JAR?

Why are some OSGi bundles in Eclipse extracted into directoris instead of being packaged as JARs?

我正在尝试拼凑一些包用于我们的内部测试。我们使用 Eclipse Equinox 作为 OSGi 实现。我找到了一个丢失的包 (org.eclipse.jdt.debug)。我一直在寻找它,发现它不是 JAR,而是被提取到一个目录中。

这是为什么? Eclipse 中的某些包被提取而其他包作为 JAR 存在是否有任何技术原因?

某些插件包含需要由其他代码或使用普通 Java 基于文件的 API 访问的资源,因此无法打包到 jar 中。

插件的MANIFEST.MF可以指定:

Eclipse-BundleShape: dir

指定将插件安装为目录。如果插件是功能的一部分,也可以在插件 feature.xml 条目的 unpack 属性中指定。

我认为org.eclipse.jdt.debug中的jdimodel.jar需要一个JavaJVM直接访问所以插件是一个目录