s-HR二开私包里面的类冲突解决办法原创
金蝶云社区-杨天罡
杨天罡
2人赞赏了该文章 173次浏览 未经作者许可,禁止转载编辑于2023年07月17日 17:08:59

现象:现场二开的单据,反审核按钮,成功后会将单据状态置为未审批,而不是未提交,现场表示二开已经分析过,代码没有看出问题,之前反审核后都是可以置为未提交的,需要研发协助分析,请帮忙分配研发协助处理

简单分析了下,该二开采用的bos设计器进行建模,元数据上为新加方案,反审核按钮使用了父类(HRBillBaseControllerBean)反审核方法入口。

通过重写父类的反审方法_untiCheckBizBill来修改状态

分析过程:

1、确保没开启多语言,有可能多语言词条会影响,确认未开启

2、查询数据库,改状态和当前实现类设置的状态不一致

3、这个时候就怀疑重写的_untiCheckBizBill方法未生效,可能存在类冲突

使用类加载工具:http://ip:port/easportal/tools/getclassurl.jsp?className=com.kingdee.eas.hr.affair.wageentry.app.SalaryEnrtyControllerBean

ip和port缓存环境上真实的ip和端口执行

发现当前的类加载私包如下图:

image.png

发现目前内存中加载的类在私包jmvivo-cloudInterface.jar里面

然后下载jmvivo-cloudInterface.jar私包,用反编译工具查看类com.kingdee.eas.hr.affair.wageentry.app.SalaryEnrtyControllerBean的内容如下图:

image.png

发现此包的类里面没任何东西

而修改的代码真正私包在另一个私包sp_jmshr_lib.jar,反编译可以看到如下图内容:

image.png

4、综上分析,就是私包部署的类冲突


解决方案:

根据上面的分析得知,客户是需要的sp_jmshr_lib.jar里面的com.kingdee.eas.hr.affair.wageentry.app.SalaryEnrtyControllerBean


需要调整私包jmvivo-cloudInterface.jar,将jmvivo-cloudInterface.jar\com\kingdee\eas\hr\affair\wageentry整个目录删除,然后重启服务


重启后如果还有问题,可以继续循环第3步的操作和解决方案操作,看看是否还有其他私包冲突,直到问题解决位置。

赞 2