在日常学习和工作中记录
关于ClassLoader 问题的分析:
EclipeClassLoader 创建:
获取ClassLoaderParent 的方法,使用了EclipseAdaptor
Adaptor 的getBundleClassLoaderParent() 如何去定 bundleClassLoaderParent?
如果使用了了boot Classloader 则 ParentClassLoader 是新建的 boot,这里分析看来应该使用framework 或者系统的ClassLoader吧。根据以上的分析,对Triones的启动环境进行了调整:
1、直接引用 org.eclipse.osgi 中的启动包,避免使用反射。注:可以直接调用EclipseStarter.run(null) 了。
2、将Triones Runtime 拆分成为 triones-core.jar (包括主要的服务接口 ItrionesFramework 等)和 triones-runtime.jar (Triones Runtime Eclipse插件)。
3、修改 Eclipse 的 config.ini 配置。
# osgi classloader :
osgi.parentClassloader = fwk
根据上面的分析, fwk 表示使用 FrameworkAdaptor 的ClassLoader 作为OSGi的parent classloader。
bundleClassLoaderParent = FrameworkAdaptor.class.getClassLoader();
Copyright @ 破门 Powered by: .Text and ASP.NET Theme by: .NET Monster