日期:2014-05-20  浏览次数:20980 次

用相同路径的类替换jar包中的类问题
问题是这样的
我原来的应用中用到了一个SeEngineDeal类,这个类在A.jar中
public class SeEngineDeal{
public static SeEngineDeal getInstance(String appName){
return SeEngineDeal.produce(appName);//这个方法返回一个SeEngineDeal 实例
}

}
我现在想做一个兼容的jar包叫B.jar,B.jar中的路径和名称与A.jar一样,这样就是为了不修改应用中的代码,因为应用已经部署到服务器了。
问题来了,现在B.jar中的SeEngineDeal类如下:
public class SeEngineDeal {
public static cn.org.xxx.client.SeEngineDeal getInstance(String appName){
return cn.org.xxx.client.SeEngineDeal.getInstance(appName);
}
...
}
这里的cn.org.xxx.client.SeEngineDeal是新增加的一个C.jar中的类
我用B.jar和C.jar替换掉了A.jar,之后应用没法用了,
报错日志中发现Type mismatch: cannot convert from SecurityEngineDeal to SecurityEngineDeal
我个人理解是cn.org.xxx.client.SeEngineDeal虽然名字与A.jar的SeEngineDeal名字相同但是路径不一样,但是我不知道怎么改啊
只有30分了,解决了都给了

------解决方案--------------------
将路径修改一样后,重新打jar包
或者,知道哪些地方调用的A包,将import的路径修改
------解决方案--------------------
1 SeEngineDeal 这两个打包的文件 的包名 一致么??
2 有缓存。。
3 RP问题, 请LZ 一个一个验证
------解决方案--------------------
1、你要確定,C.jar和B.jar是否在同一目錄。
2、你要確定,C.jar中SeEngineDeal類的package。