« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
不得窥道门,不得悟佛门,不得入窄门,实乃破门。 |
Blog信息 |
blog名称:破门点滴 日志总数:161 评论数量:404 留言数量:-2 访问次数:1421177 建立时间:2004年11月13日 |

| |
[开发笔记]Triones 开发日志:无可奈何的反射,需要类路径 原创空间, 软件技术 破门 发表于 2004/12/15 21:04:44 |
以上,实现方案二:
通过反射直接调用EclipseStarter 的startup(String[], Runable) 和run(Object) 方法以启动平台并保留在内存;关闭平台时调用 EclipseStarter的shutdown() 方法。
问题: 如何保留进程,如何与Context环境交互?
总不能全部使用反射吧?
方案: 通过反射取到 TrionesFramework 对象。
步骤一: 对 Triones Runtime 采取 分离接口模式
步骤二: 修改 launcher.EclipseLanucher 对象,通过反射获取 TrionesFramework。
1) 需要通过URLClassLoader加载 Triones Runtime 插件;
2) 需要修改DevPath,增加 Triones Runtime的插件路径。
3) 增加接口,取得TrionesFramework对象。
实现了对TrionesStarter 的反射调用启动和关闭Eclipse平台,但是 对getFramework 方法调用失败!!!!!
Get the Triones framework....
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.softme.triones.launcher.TrionesEclipseLauncher.getFramework(TrionesEclipseLauncher.java:815)
…
Caused by: java.lang.NoClassDefFoundError: org/eclipse/core/runtime/Platform
at org.softme.triones.runtime.TrionesFramework.<init>(TrionesFramework.java:55)
at org.softme.triones.runtime.TrionesStarter.getFramework(TrionesStarter.java:52)
... 22 more
看来设计架构上还是出了问题,检查一下URLClassLoader的文档:
StartupClassLoader 仅仅包含启动包的类路径,而Triones必须将所有类路径加载到context 中,才能够实现Context(Servlet)与框架的交互。
以上方案失败!! Sign….. : ( 500)this.width=500'>500)this.width=500'>500)this.width=500'>500)this.width=500'>500)this.width=500'>500)this.width=500'>):
改进方案,设法使得OSGi类路径加载到Context 路径中!(虽然难度大了点,但是必须解决)。 | |
|