仅在 QA 环境中而不是在本地获取“java.lang.NoClassDefFoundError:无法初始化类”?
Posted
技术标签:
【中文标题】仅在 QA 环境中而不是在本地获取“java.lang.NoClassDefFoundError:无法初始化类”?【英文标题】:Getting "java.lang.NoClassDefFoundError: Could not initialize class" only in QA environment, not locally? 【发布时间】:2021-09-11 01:16:28 【问题描述】:我看过这个: java.lang.NoClassDefFoundError: Could not initialize class XXX
还有这个:Different methodologies for solving bugs that only occur in production
但我的问题是,鉴于第一个答案对这个问题的描述,我怎么可能只在两个地方之一上得到这个错误?这不是一个非常严重的错误,应该会阻止程序在任何位置编译吗? (我在文件中正确导入了这个错误发生的类。)
我应该寻找两种环境之间的哪些差异?
关于我在 QA 中遇到的错误的其他问题表明它可能是类本身的一些嵌套问题,但就像我说的那样,如果是这种情况,为什么它只会在 QA 环境中发生?我可以整天在本地对我的程序运行 jmeter 负载/耐久性测试,而不会看到此错误。
请注意,我不负责 QA 的部署,但有什么我应该问负责的人吗?运行配置差异会是潜在原因吗?
splunk 中的日志不是很有帮助,这里是一个错误实例的异常的一部分:
[https-jsse-nio-11402-exec-9] 28 Jun 2021 13:29:45,415+0000 ERROR GenericThrowableMapper [applicationSystemCode=[removed]-app, clientIP=[removed], clusterId=[removed], containerId=[removed], correlationId=[removed], domainName=[removed], hostName=[removed], messageId=[removed], userId=[removed], webAnalyticsCorrelationId=|]: java.lang.NoClassDefFoundError: Could not initialize class [removed].CDDConfig
at [removed].execute([removed]AggregationResource.java:77)
at [removed]AggregationResource$$FastClassBySpringCGLIB$$7a8c5a8e.invoke(<generated>)
然后它继续进入包类和所有这些的一堆行。我添加这个是为了问 - 也许我应该尝试记录其他内容?
【问题讨论】:
【参考方案1】:这不过是一个自发的猜测,但从经验来看,我怀疑是 JDK/JRE 版本错误。
我见证的经典案例:您在开发机器上使用 OpenJDK 版本 8.x.x 编译某些东西。您提交/推送,Jenkins CICD 管道开始运行,但有人将其 JAVA_HOME 配置为某个 11.x 版本的 JDK。 -> ClassNotFoundError、NoClassDef 等
如果你自己不部署到QA,你能检查一下代码是用什么JDK编译的吗?或者向做这件事的人询问这些信息。
【讨论】:
谢谢,我会问他什么JDK版本之类的!以上是关于仅在 QA 环境中而不是在本地获取“java.lang.NoClassDefFoundError:无法初始化类”?的主要内容,如果未能解决你的问题,请参考以下文章
C++ 应用程序仅在使用本地 Windows 调试器时运行,而不是在哪个 exe 文件中运行
使用 jQuery 在变量中而不是在当前 DOM 中选择内容?