ClassNotFound问题解决一
- 替换当前线程ClassLoader,并在finally中还原
public void fixClassNotFound() {
ClassLoader classLoader=Thread.currentThread().
getContextClassLoader();
try {
Thread.currentThread()
.setContextClassLoader(yourClassLoader);
// Do something
} finally {
Thread.currentThread()
.setContextClassLoader(classLoader);
}
}
ClassNotFound问题解决二
- 通过创建BundleClassLoader的方式来加载类
- 通过使用DynamicInport-Package:some.package.*的方式来动态导入
- 通过设置org.osgi.framework.bootdelegation的方式来配置全局类加载代理,适用于javax等JDK内包含但不以java开头的包
- 通过设置org.osgi.framework.system.packages.extra来配置系统额外导出包
- 通过写一个Fragment Bundle的方式来导出某个包,该Bundle的Fragment-Host为system.bundle