一、问题及原因
程序里有个工具类,主要是调用它的静态方法来发送mq。
调用场景如下:
结果这两天报了个错:
java.lang.NoClassDefFoundError: Could not initialize class com.ceiec.rabbitmqservice.utils.MQMessageSender
后来大概看了下,这个类的class文件是存在的。而且报的错也不是class找不到之类的。
翻了下svn记录,发现新增了一个static变量,这个变量的初始化会失败。(因为spring配置文件忘配置了)
把配置文件改了就好了。
所以,这个问题原因就是static变量的初始化失败导致。
这里,也可以看出加载时机,因为在程序启动过程是没报错的。是实际代码走到这个地方的时候,发现需要调用该类的静态方法,但是呢
发现该类还没有被加载,于是进行加载、初始化等。
二、参考资料
原文地址:https://www.cnblogs.com/grey-wolf/p/10064164.html
时间: 2024-10-31 18:02:12