我有以下情况。我的应用程序中需要一个类 A 的实例,该类 A 来自捆绑包 B (osgi),位于该捆绑包中的包 X 中。到目前为止我所做的:我已将捆绑包 B 添加到本地 Maven 存储库,并将其作为“提供”范围的依赖项添加到我的 pom 中。我还添加了 Bundle B 中的包 X,其中 A 类驻留在我的 pom 中,并在 pom.xml 中使用动态导入。这里需要注意一件事 - 包 X 不是从包 B 导出的,但我知道它仍然可以工作,我见过同事这样做,但我还没有那么好。
无论如何,我如何尝试获取以下类的实例:
Bundle bundle;
Class<?> checkClass=bundle.loadClass("full path to class A");
TypeOfClassA newClass=checkClass.newInstance();
我在这里得到:
java.lang.ClassNotFoundException ClassA not found by myapplication
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532)在
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
但为什么 ?我已经加载了 jar,我正在使用捆绑类加载器,而且如果我将 checkClass 转换为 Object,我可以看到 Class A 的方法和字段,所以看起来不错,我如何获取 A 类的实例?
翻阅古今
狐的传说
相关分类