Eclipse RCP:如何处理包 class 路径中的库?

Eclipse RCP: How are libraries in the bundle class path handled?

我有一个 Eclipse RCP 应用程序,其库位于应用程序的 class 路径中。 MANIFEST.MF 看起来像这样:

...
Bundle-ClassPath: .,
  libs/commons-io-2.4.jar,
  libs/gson-2.3.1.jar,
  libs/log4j-1.2.17.jar,
  libs/slf4j-api-1.7.10.jar,
  libs/slf4j-log4j12-1.7.10.jar
...

当应用程序启动时(作为 Eclipse 之外的导出产品),这些库被复制到文件夹 configuration/org.eclipse.osgi/13/0/.cp/libs 中。查看文件属性,似乎这是在每次应用程序启动时完成的(?)。这种行为是否在某处记录在案并且会受到影响(例如,定义一个自定义文件夹,从中加载这些库)?

这是在将插件打包为 Jar 时完成的。 FileLocator.toFileURL 如有必要,将暂时将 jar 解压到此位置。

您可以指定将插件打包为目录,这样使用

就不会发生这种情况
Eclipse-BundleShape: dir

作为 MANIFEST.MF 中的一个条目(参见 Eclipse help

注意:如果您正在使用功能构建 RCP,这将被 [=26] 中 plugin 条目的 unpack 选项覆盖=]