1

我一直在做一些实验,似乎至少在某些情况下似乎并非如此,也就是说——似乎有关于插件 jar 命名的规则。

如果我的项目同时具有 anBundleActivator.start()和 an IStartup.earlyStartup(),那么无论 jar 的名称如何,后者似乎总是会运行,而第一个只会在某些情况下运行。为什么是这样?

我快速浏览了 OSGi 4 规范,但找不到任何关于包命名的信息。

附录:我实际上并不是针对 Eclipse 进行开发,而是针对使用大量 Eclipse 插件的 OSGi 应用程序(包括 p2,如果这与问题有任何相关性)。

谢谢

4

1 回答 1

2

关于BundleActivator.start()and IStartup.earlyStartup(),我已经在您之前的问题中回答了这个问题,并且您接受了答案。您需要进一步澄清吗?最好要求对原始问题进行澄清,而不是重复它。

关于 bundle JAR 文件命名,OSGi 不关心 JAR 文件的名称是什么,这就是为什么您在规范中找不到任何关于它的信息的原因。事实上,捆绑包甚至不必在文件中,您可以通过网络或从任何可以获得java.io.InputStream.

但是,Eclipse 构建在 OSGi 之上,Eclipse 的各个部分确实希望包 JAR 文件的名称与包的名称相匹配Bundle-SymbolicName

既然您说您正在开发一个 OSGi 应用程序而不是一个 Eclipse 应用程序,那么最好坚持纯 OSGi 机制,例如激活器、DS 组件和服务。避开像 IStartup 和整个扩展注册表这样的 Eclipse 主义。

于 2013-07-05T10:48:50.483 回答