关键词:私有云运维、环境缺包提示
参考文档:
无
更新日志:
20230904V1.0.0:初稿
如何从私有云运维角度查看说具体环境问题,分析具体是哪个模块导致的,从而精确提单给总部老师。
1.问题描述
问题现象、报错信息
点击在办流程的单据,提示:
java.lang.NoClassDefFoundError: com/kingdee/bos/framework/core/exception/BizException
具体报错信息如下
TraceId:跟踪标识,表示这个报错的跟踪ID,可以通过这个 Instance:实例,表示具体是哪个示例报错,记录下这个示例,后面到GPAAS中要根据这个找,具体哪个实例出现问题了。此处看到的是mservice这个节点出现报错。
mservice:com/kingdee/bos/framework/core/exception/BizException Key: TraceId:…… Instance:mservice-XXXXXX 发生时间:Mon Sep 04 XX:XX:XX GMT+08:00 2023 =================================================== 调用堆栈: java.lang.NoClassDefFoundError: com/kingdee/bos/framework/core/exception/BizException at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at kd.bos.dataentity.TypesContainer.doClassforName(TypesContainer.java:92) at kd.bos.dataentity.TypesContainer.getOrRegister(TypesContainer.java:77) at kd.bos.workflow.engine.impl.util.ReflectUtil.loadClass(ReflectUtil.java:324) at kd.bos.workflow.engine.impl.util.ReflectUtil.getClazz(ReflectUtil.java:96) at kd.bos.workflow.engine.impl.util.ReflectUtil.loadClass(ReflectUtil.java:55) at kd.bos.workflow.engine.impl.util.ReflectUtil.instantiate(ReflectUtil.java:139) at kd.bos.workflow.engine.msg.MessageServiceImpl.register(MessageServiceImpl.java:139) at kd.bos.workflow.engine.msg.MessageServiceImpl.init(MessageServiceImpl.java:114) at kd.bos.workflow.engine.impl.cfg.ProcessEngineConfigurationImpl.getMessageService(ProcessEngineConfigurationImpl.java:2370) at kd.bos.workflow.engine.msg.MessageServiceUtil.getMessageService(MessageServiceUtil.java:492) at kd.bos.workflow.engine.WfConfigurationUtil.isEnabled(WfConfigurationUtil.java:566) at kd.bos.workflow.engine.WfConfigurationUtil.isYunzhijiaEnable(WfConfigurationUtil.java:606) at kd.bos.workflow.component.ApprovalRecord.setArData(ApprovalRecord.java:208) at kd.bos.workflow.component.ApprovalRecord.setBusinessKey(ApprovalRecord.java:127) at kd.bos.workflow.component.ApprovalRecord.bindData(ApprovalRecord.java:167) at kd.bos.form.container.Container.bindData(Container.java:71) at kd.bos.form.container.Container.bindData(Container.java:71) at kd.bos.form.container.Container.bindData(Container.java:71) at kd.bos.form.container.Container.bindData(Container.java:71) at kd.bos.form.container.Container.bindData(Container.java:71) ……
2.原因分析
分析问题出现的可能原因(视情况而定)
2.1检查具体哪个JAR包关联了上述的插件
具体涉及到的是如下包:
com/kingdee/bos/framework/core/exception/BizException
现在不会报错的实例上查下:
结论:
定位到报错有可能是缺了qing-rpt-common-5.0.jar包
2.2报错的环境中验证下是否有上一步验证缺的JAR包
2.3确定少了这个JAR包对应的ZIP包
先在容器里面过滤下这个类属于哪个jar包,然后再根据jar包在应用仓库里面过滤zip,zip过滤xml
根据2.1容器中查到的这个类属于哪个JAR包
再到应用仓库(appstore)中查找下具体哪个包涉及到这个JAR包
结论:
定位到是轻分析领域的报错,解决JAR包名,rpt这个是轻报表的简称。
应用仓库中有,但是容器中没有,定位问题到:GPAAS配置
GPAAS配置的XML文件没有加载到bos-qing-mservice.zip这个包
因为这个是平台层的包,那就检查下应用仓库里面BOS文件夹的XML文件找下:
哪个XML文件有配置bos-qing-mservice.zip这个包。
分析可知,这个ZIP包是在bos-qing.xml这个文件里面的。
结合轻分析容器和非轻分析容器V5.0.011更新配置可知:
从5.0.011开始,只有轻分析容器的配置项boslibs才会配置
报错,可知:轻分析容器才会配置bos-qing.xml。目前报错的是非轻分析容器(mservcie-xxx)
但是这边提示的报错是为什么呢?
标准产品一般不会引用到这个报错的类(结合现场反馈:现场是打完二开包后出现的)
2.4检查二开包
定位到这次增量的JAR包,确实是二开引用到的这个类。
3.解决方法
解决思路/操作步骤
联系二开修改其代码,这是由于二开开发不规范导致的
当然,运维层面可以通过环境变量添加这个报错来解决当前的报错
比如mservice容器的boslibs配置bos-qing.xml来解决。
但是这个显然是二开或者标准产品报错,不然随便从运维层来解决这个问题。
4.应用小结
注意事项;补充说明(视情况而定)
4.1不操作环境都OK,一操作环境就出现问题,这个有可能跟你操作有关
这次是我们在打二开包时出现的,但是测试环境却无法复现,根本原因是因为测试环境的mservice的配置项
测试配的boslibs是:bos.xml
测试配的boslibs是:bos.xml,bos-qing.xml
遇到这个问题,首先要排除是不是做了什么操作导致的。
先排除变量,先把二开包还原到未更新前的状态验证下。
4.2正式环境和测试环境配置要一模一样,才能真正检查出问题
GPAAS上配置也要一模一样,不能正式和测试的GPAAS配置各有各的配置。
推荐阅读