根据OSGi规范,OSGi的类加载路径为以下:
1.java系统类库:java.*
2.OSGi框架本身要加载的类
3.bundle空间中的类:在MANIFEST.MF中引入的:import-package,Required-bundles,
本bundle中的私有类
附属片断(attached fragment)
OSGi中不提倡使用第三方包,它本身的概念就是希望所有的类都是bundle,大家的地位平等。然而,这会给我们的工作带来麻烦,因为现在的第三方包中往往会用到别的第三方包。
目前,可以想到的解决思路是:1.将所有依赖的第三方包都集成为bundle。2.想办法绕过OSGi的限制:OSGi读取框架外的类的方法。
上面内容是我在网上找到的。
我在实际项目中,一个excel导出模板jar包,因为引用了poi的jar包,在开发环境中偶尔会出现问题,但是重启一下eclipse就可以解决,有时还是不能解决。但是部署到服务器上会一直出问题。说是找不到类(Class) Class not found
后来网上找解决方法,找到了一个解决方法,就是对原来的jar包进行改造。简单来说就是修改jar包中的manifest.mf文件。添加Exprot-Package。突然觉得这种方法和seajs中的export 方法很像,一个是对java进行模块化操作,一个是对js进行模块化操作。