#常见问题#【熊说】苍穹私有云运维:提示缺包案例分析01(Java.lang.NoClassDefFoundError)原创
金蝶云社区-福分小熊
福分小熊
0人赞赏了该文章 446次浏览 未经作者许可,禁止转载编辑于2023年09月04日 21:45:22

关键词:私有云运维、环境缺包提示

参考文档:

更新日志:

20230904V1.0.0:初稿

如何从私有云运维角度查看说具体环境问题,分析具体是哪个模块导致的,从而精确提单给总部老师。


1.问题描述

问题现象、报错信息

点击在办流程的单据,提示:

java.lang.NoClassDefFoundError: com/kingdee/bos/framework/core/exception/BizException

image.png

具体报错信息如下

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

现在不会报错的实例上查下:

image.png

image.png


结论:

定位到报错有可能是缺了qing-rpt-common-5.0.jar包


2.2报错的环境中验证下是否有上一步验证缺的JAR包

image.png


2.3确定少了这个JAR包对应的ZIP包

先在容器里面过滤下这个类属于哪个jar包,然后再根据jar包在应用仓库里面过滤zip,zip过滤xml

根据2.1容器中查到的这个类属于哪个JAR包

再到应用仓库(appstore)中查找下具体哪个包涉及到这个JAR包

image.png


结论:

定位到是轻分析领域的报错,解决JAR包名,rpt这个是轻报表的简称。

应用仓库中有,但是容器中没有,定位问题到:GPAAS配置

GPAAS配置的XML文件没有加载到bos-qing-mservice.zip这个包

因为这个是平台层的包,那就检查下应用仓库里面BOS文件夹的XML文件找下:

哪个XML文件有配置bos-qing-mservice.zip这个包。

分析可知,这个ZIP包是在bos-qing.xml这个文件里面的。

image.png


结合轻分析容器和非轻分析容器V5.0.011更新配置可知:

从5.0.011开始,只有轻分析容器的配置项boslibs才会配置

image.png

报错,可知:轻分析容器才会配置bos-qing.xml。目前报错的是非轻分析容器(mservcie-xxx)


但是这边提示的报错是为什么呢?


标准产品一般不会引用到这个报错的类(结合现场反馈:现场是打完二开包后出现的)


2.4检查二开包

定位到这次增量的JAR包,确实是二开引用到的这个类。

image.png




3.解决方法

解决思路/操作步骤

联系二开修改其代码,这是由于二开开发不规范导致的


当然,运维层面可以通过环境变量添加这个报错来解决当前的报错

比如mservice容器的boslibs配置bos-qing.xml来解决。

但是这个显然是二开或者标准产品报错,不然随便从运维层来解决这个问题。



4.应用小结

注意事项;补充说明(视情况而定)

4.1不操作环境都OK,一操作环境就出现问题,这个有可能跟你操作有关

这次是我们在打二开包时出现的,但是测试环境却无法复现,根本原因是因为测试环境的mservice的配置项

测试配的boslibs是:bos.xml

测试配的boslibs是:bos.xml,bos-qing.xml


遇到这个问题,首先要排除是不是做了什么操作导致的。

先排除变量,先把二开包还原到未更新前的状态验证下。


4.2正式环境和测试环境配置要一模一样,才能真正检查出问题

GPAAS上配置也要一模一样,不能正式和测试的GPAAS配置各有各的配置。



赞 0