在日常學習和工作中記錄
關于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