1. 问题描述:在703服务器上打了供应链的补丁PT052222-》然后在BOS开发工具中导入新的解决方案-》通过BOS开发环境启动客户端打开采购申请单等单据时报错(原因是少按钮,代码和元数据不一致)
错误信息:btnExecuteQuotaPolicy
错误详细堆栈信息:java.lang.NoSuchFieldError: btnExecuteQuotaPolicy
at: com.kingdee.eas.scm.sm.pur.client.PurRequestEditUI.initPurRequestHeader(PurRequestEditUI.java:3425)
at: com.kingdee.eas.scm.sm.pur.client.PurRequestEditUI.onLoad(PurRequestEditUI.java:2607)
2. 问题分析:跟踪问题发现scm.sm包在工作空间的basemetas目录下有三个地方存在,分别为:
basemetas\eas\scm_sm-metas.jar
basemetas\ industry\ scm_sm-metas.jar
basemetas\ sp-industry-metas.jar
而程序加载的是basemetas\ sp-industry-metas.jar 里的采购申请单EditUI(与代码不一致)
3问题疑问:新导出的解决方案元数据默认加载了sp-industry-metas.jar ,而最新的在元数据不是在sp-industry-metas.jar里
解决办法:
此问题是bos工具元数据的加载顺序导致的,可以临时变通处理下,处理方法:
在basematas目录下,新建一sp目录,然后拷贝sp-industry-mates.jar到这个目录,之后重新设置解决方案(在设置解决方案-测试设置-其他测试设置,是否java工程复选框重新勾选一下),重启测试即可。
先变通处理,后续研发另行分析并给出正确的处理方法。