java 异常之java.lang.NoClassDefFoundError: Could not initialize class

本文详细分析了Java中遇到NoClassDefFoundError异常的原因,通过一个简单的代码示例展示了当静态初始化块中出现错误(如尝试将非法字符串转换为整数)时,如何引发此类异常。在main方法中尝试实例化此类时,会抛出NumberFormatException,进而导致NoClassDefFoundError。理解这个异常对于排查Java应用程序的运行时问题至关重要。
摘要由CSDN通过智能技术生成

异常描述:在实例化类对象的时候,抛出异常java.lang.NoClassDefFoundError: Could not initialize class
原因:一般有该异常是因为实例化的目标类有static部分,且在加载static的时候失败
代码示例

public class NoClassDefFoundErrorTest {
    static {
        int i = Integer.parseInt("rtt");
    }

}

可以看上面是一个简单的测试类,NoClassDefFoundErrorTest。该类只有一个static代码块,在代码块中只有一行代码int i = Integer.parseInt(“rtt”);,因为“rtt”无法转换成int类型,所以必然会失败,且抛出异常。
接下来是执行类

public class NoClassDefFoundErrorTest2 {
    public static void main(String[] args) {
        new NoClassDefFoundErrorTest();
    }
}

NoClassDefFoundErrorTest2 类中只有一个main(),在main()中也只是初始化了一个NoClassDefFoundErrorTest对象,并没有其他的任何操作。在run NoClassDefFoundErrorTest2 会发现抛出了如下异常信息

Caused by: java.lang.NumberFormatException: For input string: "rtt"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.parseInt(Integer.java:615)
	at com.NoClassDefFoundErrorTest.<clinit>(NoClassDefFoundErrorTest.java:5)
	... 1 more

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值