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变量的初始化失败导致。

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

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

二、参考资料

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

原文地址:https://www.cnblogs.com/grey-wolf/p/10064164.html

时间: 2024-10-31 18:02:12

java.lang.NoClassDefFoundError: Could not initialize class xxx 原因的相关文章

异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties

参考文章: 使用Log4jdbc-log4j2监听MyBatis中运行的SQL和Connection 使用 log4jdbc格式化输出SQL,maven配置如下: <dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4</artifactId> <version>1.16</version> <

java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart

最近在进行利用jfreechart生成图表时发现,项目在本地运行的好好的,一部署到服务器(linux系统)上就不行,报这样的错误: java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart,后来经过搜索解决了,详见如下: 1.首先,这与服务器上操作系统是linux系统有关,因为linux系统本身是无图形化界面的,所以在JFreeChart chart = ChartFactory.c

java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.m

javax.validation.Validator.validator.validate(object, groups) bean验证注解报错,异常: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm at org.hibernate.validator.messagei

日志异常:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.StaticLoggerBinder

今天启动开发的项目,碰到了一个日志上的bug:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.StaticLoggerBinder.刚看到一脸懵.于是到网上查了一下,也有遇到类似问题的.说是要加一些依赖,但是我试了不起作用.后来看到了一篇讲slf4j集成logback和log4j的文章,给我了我灵感,尝试了一下,解决了问题.文章的地址:https://www.jianshu.com/p/9a283

java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl

启动项目报 用的tomcat版本是8 解决方案: 换成7 囧~

java.lang.NoClassDefFoundError: Could not initialize class ......

在测试数据字典工具类的时候一直报这个错误,找了好久,原来是SpringContextUtils这个类没有放入到容器中. 但是我在SpringContextUtils上面加了注解的,为什么注解没有扫到呢? 要不怎么说你蠢呢? spring配置文件中的base-package没有扫到这个工具类所在的包,我也是醉了...... <context:component-scan base-package="xxxx"/>

关于怎么解决java.lang.NoClassDefFoundError错误

五一在部署新的统一登录时,遇到这样一个问题: 很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的. NoClassDefFoundError错误发生的原因 NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误.例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用

【eclipse】 怎么解决java.lang.NoClassDefFoundError错误

前言 在日常Java开 发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类 明明还在,为什么找不到?而且我们很容易把java.lang.NoClassDefFoundError和 java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的.我们往往花费时间去不断尝试一些其他 的方法去解决这个问题,而没有真正去理解这个错误的原因.这篇文章就是通过解决NoC

怎么解决java.lang.NoClassDefFoundError错误

前言 在日常Java开发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类明明还在,为什么找不到?而且我们很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的.我们往往花费时间去不断尝试一些其他的方法去解决这个问题,而没有真正去理解这个错误的原因.这篇文章就是通过解决NoClass