我已阅读大量关于此问题的Equinox代码,但仍然找不到在Eclipse Equinox设置中获取OSGi bundle的类加载器的非hacky方法。是否有这样一种方法?
我已阅读大量关于此问题的Equinox代码,但仍然找不到在Eclipse Equinox设置中获取OSGi bundle的类加载器的非hacky方法。是否有这样一种方法?
在 OSGi 4.3 中,您可以使用:
bundle.adapt(BundleWiring.class).getClassLoader()
loadClass()
方法的类加载器。或者,您可以节省一些时间,改用Spring DM的BundleDelegatingClassLoader类。通过BundleWiring接口可以获得Bundle的类加载器。以下是一个简短的示例:
Bundle bundle = bundleContext.getBundle();
BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
ClassLoader classLoader = bundleWiring.getClassLoader();
在普通的Java代码中,您可以使用以下代码获取加载给定对象的类加载器:
object.getClass().getClassLoader();
SomeType.class.getClassLoader();