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

标签: Java, OSGi

添加新评论