如何获取bundle-entry URL的引用Bundle?

How to obtain the referenced Bundle of a bundle-entry URL?

在 OSGi 环境中 ClassLoader.getResource() 通常 returns a bundle-entry/bundle-resource URL(使用相应的协议)。 OSGi specification chapter 3.9.6 - "Resource Loading" 仅指定了必须如何构建这些 URL 的几个方面(例如路径)并将其他所有内容留给实现。

仅使用独立于实现的 OSGi API?

是否有可能,如果可以,如何获取 bundle-entry URL 指向的 Bundle

例如,对于 jar-URL,可以打开一个连接,将其转换为 JarURLConnection 并使用 JarURLConnection.getJarFile() 获取 JarFile。

Is it possible, and if yes how, to obtain the Bundle to which a bundle-entry URL is pointing, using only implementation-independent OSGi API?

不是以指定的方式。 OSGi 规范故意留下 URL 细节不透明,以允许框架实现自由。

对于特定的框架实现,您可以在 URL 中辨别 bundle id。但这可能会根据框架实施的需要而改变。