`
songzhan
  • 浏览: 245931 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

ava.lang.ExceptionInInitializerError的原因(转)

阅读更多

这个错误是说变量初始化出现问题,通常出现在静态变量尤其是单例模式。这种问题往往是初始化顺序不对造成的,下面举个简单的例子。

 

[java] view plaincopy
 
  1. import java.util.HashMap;  
  2. import java.util.Map;  
  3.   
  4. public class Example {  
  5.   
  6.     private static Example example = new Example();  
  7.       
  8.     private static Map<Integer,Boolean> test =   
  9.         new HashMap<Integer, Boolean>();  
  10.       
  11.     private Example()  
  12.     {  
  13.         test.put(1true);  
  14.     }  
  15.       
  16.     public static Example getInstance()  
  17.     {  
  18.         return example;  
  19.     }  
  20. }  

 

      如果你在别的类调用getInstance,就会报错ExceptionInInitializerError。这是因为类加载时不会为实例变量赋值,对象创建时不会为静态变量赋值。我们调用getInstance时,此类就开始加载,加载的时候不会为实例变量赋值,但是会按顺序给静态变量赋值,所以先为example赋值,然后为test赋值即初始化。但为example赋值时出现了个小插曲,它会调用构造方法创建一个对象。对象创建时不会为静态变量test赋值,而构造器内却已经调用test,于是报错了。

改为:

 

[java] view plaincopy
 
  1. private static Map<Integer,Boolean> test =   
  2.         new HashMap<Integer, Boolean>();  
  3. private static Example example = new Example();  

 

就可以了

分享到:
评论

相关推荐

    java.lang.ExceptionInInitializerError异常的解决方法

    java.lang.ExceptionInInitializerError异常的解决方法 java.lang.ExceptionInInitializerError异常是一种常见的Java异常,它发生在静态变量的初始化过程中。了解这个异常的解决方法对于Java开发者来说非常重要。 ...

    Android studio报: java.lang.ExceptionInInitializerError 错误

    Android studio报java.lang.ExceptionInInitializerError错误解决方法 一、Java.lang.ExceptionInInitializerError错误概述 Java.lang.ExceptionInInitializerError是一个非常常见的错误,在Android studio中经常...

    解决出现 java.lang.ExceptionInInitializerError错误问题

    `java.lang.ExceptionInInitializerError` 是Java编程语言中一种比较特殊的异常,通常在类的静态初始化过程中遇到问题时抛出。这个错误意味着在初始化类的静态变量或静态初始化块(static block)时发生了异常。这类...

    Java java.lang.ExceptionInInitializerError 错误如何解决

    `java.lang.ExceptionInInitializerError` 是Java编程语言中一个特殊的运行时异常,它通常表示在类的静态初始化过程中发生了异常。这个错误不是因为类的构造函数,而是由于静态变量初始化或者静态初始化块(也称为...

    apple越狱备份数据

    Exception in thread "Thread-1" java.lang.ExceptionInInitializerError at com.semaphore.jna.md.MDLibrary.&lt;clinit&gt;(MDLibrary.java:39) at ...

    java.lang.NoClassDefFoundError错误解决办法

    5. 检查日志文件中是否有java.lang.ExceptionInInitializerError这样的错误 与ClassNotFoundException的区别 NoClassDefFoundError和ClassNotFoundException都是Java中的类加载错误,但是它们之间有着明显的区别。...

    java-IllegalArgumentException:此NavController未知导航目标xxx-代码日志.html

    链接is unknown to this NavController

    sapjco3.dll version "721.619" ,"720.38",17,27737 压缩包一共包含2个版本的dll

    context with path [] threw exception [org.glassfish.jersey.server.ContainerException: java.lang.ExceptionInInitializerError: Native library sapjco3 is too old. Found library C:\Windows\System32\sapjco...

    java 异常种类总结【转】.docx

    java.lang.ExceptionInInitializerError 是一种初始化程序错误,指的是在程序中执行静态初始化程序时出现的异常。 19. java.lang.IllegalAccessError 违法访问错误 java.lang.IllegalAccessError 是一种违法访问...

    Android 出现:java.lang.NoClassDefFoundError…错误解决办法

    类似的问题还包括其他类型的Java运行时异常,如`ExceptionInInitializerError`、`NoSuchMethodError`和`UnsatisfiedLinkError`等,这些错误通常与类加载、方法调用或库链接失败有关。解决这些问题通常需要深入理解...

    java 异常总结

    **初始化程序错误**:`ExceptionInInitializerError` - **定义**:当执行一个类的静态初始化程序的过程中,发生了异常时抛出。 - **示例**:静态初始化块中的异常。 ##### 7. **违法访问错误**:`...

    springboot整合dubbo

    在IT行业中,Spring Boot和Dubbo是两个非常重要的框架,它们分别在微服务和分布式服务领域扮演着核心角色。Spring Boot简化了Spring应用的初始搭建以及开发过程,而Dubbo则是一个高性能、轻量级的Java远程服务调用...

    udig2.0安装程序包

    UDIG(User-friendly Desktop GIS)是一款开源的桌面地理信息系统,专为地图制作、地理数据分析以及地理数据可视化设计。UDIG 2.0是其一个重要版本,提供了更多改进和新功能,旨在提供更好的用户体验和增强的功能。...

    exception 需要解决的问题

    在IT行业中,异常处理是程序开发中不可或缺的一部分。异常(Exception)是程序运行时出现的错误情况,它中断了正常代码流程,需要被适当地捕获和处理。本篇文章将探讨"exception 需要解决的问题",并结合提供的标签...

    入研究java.lang.ThreadLocal类.docx

    ### 知识点详解:Java.lang.ThreadLocal 类 #### 一、概述 **ThreadLocal** 并非线程的一种特殊实现形式,而是一种为每个线程提供独立副本的机制,通常被称为“线程局部变量”。这种机制使得每个线程都可以独立...

    weblogic12c部署webservice错误问题WSSERVLET11

    错误信息"无法解析运行时描述符: java.lang.IllegalStateException: MASM0001:"指出在部署Web服务时遇到了异常情况。这个错误代码MASM0001通常与WebLogic的模块组装(Module Assembly)过程有关,该过程是将应用组件...

    Java的异常类

    - **`java.lang.ExceptionInInitializerError`**:当执行类的静态初始化程序过程中发生异常时抛出。 - **`java.lang.SecurityException`**:违反安全原则异常,例如尝试执行未授权的操作。 - **`java.io.EOF...

    alpine-openjdk8:openjdk8高山软件包

    openjdk8高山软件包 之所以能够使用版本openjdk8-8.232.09-r0,是因为openjdk8-8.242中断了...java.lang.ExceptionInInitializerError at java.lang.management.ManagementFactory.getOperatingSystemMXBean(Managemen

Global site tag (gtag.js) - Google Analytics