ClassNotFoundException and Buddy Classloading

看以下情景:

在一个plugin-in中有一个类,其代码如下:

java 代码
 
  1. package org.bencode.learnrcp.plugin1;  
  2.   
  3. public class SimpleClassLoader {  
  4.   
  5.     public static Class loadClass(String name) throws ClassNotFoundException {  
  6.         return Class.forName(name);  
  7.     }  
  8. }  

然后在另一个 plugin-in (rcp application) 中, (这个 plugin-in 依赖于上一个 plugin-in)

有以下代码片段:

java 代码
 
  1. package org.bencode.learnrcp.plugin2;  
  2.   
  3. public class ClassForLoad {  
  4.     // empty  
  5. }  


在某一处:
  
java 代码
 
  1. Class c = SimpleClassLoader.loadClass("org.bencode.learnrcp.plugin2.ClassForLoad ");  



这时候,运行 plugin2的时候,就会出现 ClassNotFoundException, 原因是 SimpleClassLoader 不会到 plugin2 中找... 至于具体的原因,这里先不说(下次专门讲一下, 我害怕打字,还想玩卡丁)。

这时候,我们可以用 Buddy Classloading 来解决, 它就是为了此类任务而存在的。

两步:
1. 在 plugin 1 的 MANIFEST.MF 中加上如下东东:

Eclipse-BuddyPolicy: registered

他是说,如果我找不到类,将会请求登记过的plugin的帮助。

2. 在 plugin 2 的 MANIFEST.MF 中加上如下东东:

Eclipse-RegisterBuddy: package org.bencode.learnrcp.plugin1

他是说,嘿,如果你找不到类,先别出错,试着到我这里看看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值