如何获取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。但这可能会根据框架实施的需要而改变。
在 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。但这可能会根据框架实施的需要而改变。