java.lang.NoClassDefFoundError: Could not initialize class xxx 原因

一、问题及原因

程序里有个工具类,主要是调用它的静态方法来发送mq。

调用场景如下:

结果这两天报了个错:

java.lang.NoClassDefFoundError: Could not initialize class com.ceiec.rabbitmqservice.utils.MQMessageSender

后来大概看了下,这个类的class文件是存在的。而且报的错也不是class找不到之类的。

翻了下svn记录,发现新增了一个static变量,这个变量的初始化会失败。(因为spring配置文件忘配置了)

把配置文件改了就好了。

所以,这个问题原因就是static变量的初始化失败导致。

扫描二维码关注公众号,回复: 4360753 查看本文章

这里,也可以看出加载时机,因为在程序启动过程是没报错的。是实际代码走到这个地方的时候,发现需要调用该类的静态方法,但是呢

发现该类还没有被加载,于是进行加载、初始化等。

二、参考资料

JVM类生命周期概述:加载时机与加载过程

猜你喜欢

转载自www.cnblogs.com/grey-wolf/p/10064164.html