从 osgi 包访问资源:URL 中的包方案导致格式错误的异常

Accessing resource from osgi bundle: bundle scheme in the URL lead to a malformed exception

问题

有没有办法在 osgi 上下文中使用 "bundle" 作为方案从其构造函数构建 java.net.URL 对象?

例子

URL url = new URL("bundle://<bundle-id>/path/file.txt");
InputStream in = url.openStream();
...

当流打开时,此代码会导致格式错误的异常(未知协议)。我不知道 osgi 平台如何将新方案注册到 java.net.URL

上下文和理想的解决方案

感谢配置管理员,我想配置一项服务。此配置包含一个 属性 来设置文件路径。我希望消费者能够将文件存储在他想要的地方(文件系统、内部包甚至互联网)。

前面的例子可能很棒,因为代码很简单,而且消费者可以提供以下形式的路径:"bundle:///path/file.txt"、"file:///path/file.txt"、"http:///path/file.tx",但不幸的是它没有工作。

没有。只有框架可以构建这些 URL。您可以将 Bundle 对象用于 return 捆绑包中内容的 URL。