关于java.lang.NoClassDefFoundError: Could not initialize class xxx错误的原因和处理办法

2023-11-07

关于NoClassDefFoundError错误出现的原因有多种,网上其他博主也给出各种答案,但说的都比较广泛。
这里博主说一下由于初始化失败而造成的NoClassDefFoundError错误。
博主在一个Test这个类中使用了静态代码块,类结构如下所示:

public class Test {

	private static int i = 0;

	static {
		//放一个除0操作,使类初始化失败
		i = 3/0;
	}

	public static int getI(){
		return i;
	}
}

这样在类初始化时会由于除0异常而使类初始化失败;
下面这段代码会调用Test.getI()方法:

	@PostMapping("/connectionTimeOutTest")
	public ResponseEntity connectionTimeOutTest(){
		return ResponseEntity.ok(Test.getI());
	}

当第一次调用的时候,会使得Test类的静态代码块执行,此时会报除0异常,

java.lang.ArithmeticException: / by zero
	at com.example.miaosha.bean.Test.<clinit>(Test.java:14) ~[classes/:na]
	at com.example.miaosha.web.UnionTestResource.connectionTimeOutTest(UnionTestResource.java:23) ~[classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]

而第二次调用的时候就会因为初始化失败而报NoClassDefFoundError错误了
第二次调用:

java.lang.NoClassDefFoundError: Could not initialize class com.example.miaosha.bean.Test
	at com.example.miaosha.web.UnionTestResource.connectionTimeOutTest(UnionTestResource.java:23) ~[classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]

当出现NoClassDefFoundError错误时可以检查一下是不是类的初始化出现了问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于java.lang.NoClassDefFoundError: Could not initialize class xxx错误的原因和处理办法 的相关文章

随机推荐

  • Redis缓存击穿问题及解决思路

    一 什么是缓存击穿 缓存击穿问题也叫热点Key问题 就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了 无数的请求访问会在瞬间给数据库带来巨大的冲击 逻辑分析 假设线程1在查询缓存之后 本来应该去查询数据库 然后把这个数据重新加载
  • 【Java】对象的序列化与反序列化

    对象序列化的含义 对象序列化 Serialize 指将一个Java对象写入IO流中 对象的反序列化 Deserialize 则是指从IO流中恢复该Java对象 如果想让某个Java对象能够序列化 则必须让它的类实现java io Seria
  • 使用docker需要知道的基础知识

    一 docker概念 1 1 docker仓库 镜像 容器的作用和三者之间的关系是什么 答 Docker 仓库 用来保存镜像 可以理解为代码控制中的代码仓库 Docker 镜像 是用于创建 Docker 容器的模板 Docker 容器 是独
  • 前端工程化详解——理解与实践前端工程化

    前言 前端工程化一直是一个老生常谈的问题 不管是面试还是我们在公司做基建都会经常提到前端工程化 那么为什么经常会说到前端工程化 并没有听过后端工程化 Java工程化或者Python工程化呢 我们理解的前端工程化是不是一直都是Webpack的
  • 回望2001年的雪鸟城:引发全球软件革命的“敏捷宣言”是如何诞生的?

    将人们置于流程之上 专注于开发可以工作的软件 而不是软件的文档 和你的客户一起工作 而不是为一份合同而争吵 在此过程中 要对改变持开放态度 编者按 敏捷 Agile 这个对于开发真来说不在陌生的概念 已经提出了近17年了 其背后的哲学理念也
  • [CSDN竞赛]第五期参赛回顾

    CSDN竞赛 第五期参赛回顾 体验感想 第一次参加 本来有点小期待 那天还起晚了 结果登录不上去 发现大家都有问题 对我来说反而是好事 本来早上没有下午晚上更加精神 下面是提的建议 上次的登录问题 希望官方下次不要再出现 一定要准备充足 为
  • Unity Shader:用几何着色器实现复联3灭霸的终极大招灰飞烟灭

    图1 正常渲染 图2 几何着色器粒子化特效进行中 图3 几何着色器粒子化特效进行中 1 用几何着色器进行图元转换 在OpenGL渲染管线中 几何着色器Geometry Shader有一个独一无二的功能 既是图元转换 可简单理解为对基本图元点
  • 微信小程序默认下拉刷新和自定义下拉刷新的方式

    1 默认下拉刷新 在指定页面对应的 json配置文件中加入 enablePullDownRefresh true backgroundTextStyle dark 在对应的 js文件中 写入onPullDownRefresh 如果存在则替换
  • 手把手教你做一套“能源管理系统” A

    hello 大家好 我是CC 今天让CC来手把手教大家设计一套 能源管理系统 上个视频咱们有说到 能源管理系统 的范围很广 可以粗分为面向供给侧和面向消费侧 其中面向消费侧又可以分为 家庭能源管理系统HEMS 社区 园区能源管理系统CEMS
  • EQ频响曲线绘制和DRC特性曲线绘制

    目录 1 EQ 系数计算和频响曲线绘制 1 1 基本流程 1 2 EQ参数输入 1 3 滤波器系数计算 1 4 频率响应计算 1 5 曲线绘制 2 DRC特性曲线绘制 2 1 基本流程 2 2 参数输入 2 3 增益计算 2 4 静态特性曲
  • Java学习书籍推荐(步步为营)

    概述 本文只要介绍 Java学习的书籍 进阶之路 始于行动 编程重在理解加多实践 在当今快速发展的时代 要学会站在巨人的肩膀上 吸取经验 看书就是最快与最低成本的进阶之路 史上没有最好的书籍 只有适合自己的书籍 小伙伴们开始行动吧 Java
  • Qt5.14.2中使用QCamera实现切换相机、分辨率和图像捕获功能

    demo中主要涉及的Qt类有 相机类QCamera 取景器类QCameraViewfinder 图像捕获类QCameraImageCapture 因此添加模块multimedia multimediawidgets QT core gui
  • 在 uni-app 中使用 webview 打开本地文件,打开不成功

    在 uni app 中使用 webview 打开本地文件 打开不成功出现套娃现象的解决方案 小程序仅支持加载网络网页 不支持本地html 排查本地文件是否按照官方给出的路径建立的 uni app 项目根目录 gt hybrid gt htm
  • 全民奇迹修复云服务器跨服,越过服务器来打你 全民奇迹跨服战玩法全面解析...

    在全民奇迹当中 玩家与玩家之间的PK往往是解决问题最好的方法 一言不合就开打才是所有奇迹勇士的特点 本篇全民奇迹跨服战玩法全面解析 973手游网小编就来为大家说说跨服战 全民奇迹 16人的对决 幻影寺院 实力的对决 在幻影寺院中 玩家被分为
  • bluez——dbus接口api

    bluez dbus接口api bluez的api接口的说明文档在 doc 路径下 我这先重点分析下adapter agent和device这几个文件 这里面包含的是常用的api 1 agent c 这里现在注册的几个dbus方法 void
  • Winform SplitContainer控件可调整大小

    IsSpliterFixed属性设为False FixedPannel属性设为Pannel1 要固定的面板的名称 之后鼠标移动到控件中间的分隔线 就可以调整大小了
  • 多项式加法

    多项式的加法 一 创建链表 二 初始化链表 三 打印链表 四 打印结点 五 添加数据 六 相加 七 测试代码 八 测试结果 一 创建链表 typedef struct LinkNode int coefficient int exponen
  • MIT6.824分布式系统lecture1笔记:Intro,MapReduce

    lecture1先对分布式系统的设计进行了概述 然后介绍了MapReduce的案例 Intro 为什么要使用分布式系统 1 追求高性能 通过分布式系统进行并行计算 2 使系统具有容错性 一台计算机计算错误 可以转移到另一台计算机 3 一些问
  • Docker部署Redis单机版

    1 拉取镜像 docker pull redis latest 2 创建挂载目录 mkdir r home egn redis conf mkdir r home egn redis data 3 修改配置文件 新建redis conf 节
  • 关于java.lang.NoClassDefFoundError: Could not initialize class xxx错误的原因和处理办法

    关于NoClassDefFoundError错误出现的原因有多种 网上其他博主也给出各种答案 但说的都比较广泛 这里博主说一下由于初始化失败而造成的NoClassDefFoundError错误 博主在一个Test这个类中使用了静态代码块 类