【发布时间】:2015-12-30 09:19:38
【问题描述】:
我有一个现有的 jar,我现在已将其转换为 OSGI Bundle。
问题是现在(作为 OSGI Bundle),它不能加载资源。
我正在使用ClassLoader.getSystemResource() 方法,它返回null。
使用代码:
java.net.URL jdbc = ClassLoader.getSystemResource("com/company/cfg/provider/JDBC.xml");
我无权访问源代码,所以请通过更改配置(清单文件或其他内容)以使其正常工作。
Bundle.getResource() 有效,但我无法更改源代码。
【问题讨论】:
-
没有这种方法。
getSystemResource()顾名思义。这就是为什么它的名字不是getResourceFromAMagicallyDeterminedClassLoader() -
@Holger :我不是 OSGI 专家。 getSystemResource() 适用于非 osgi 应用程序。
-
这与 OSGi 无关。
getSystemResource()适用于as its documentation states 可通过系统类加载器(这是加载普通独立应用程序的类加载器)访问的资源。它不适用于其他类加载器。 OSGi 的全部意义在于拥有 bundles 而不是一个全局应用程序类加载器。因此,如果您的代码依赖于getSystemResource(),则它与 OSGi 不兼容。或任何其他重要的应用程序结构。
标签: java osgi classloader osgi-bundle