转载自:http://blog.csdn.net/fykhlp/article/details/6236316

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

import java.util.HashMap;
import java.util.Map;  public class Example {  private static Example example = new Example();  private static Map<Integer,Boolean> test =   new HashMap<Integer, Boolean>();  private Example()  {  test.put(1, true);  }  public static Example getInstance()  {  return example;  }
}  

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

private static Map<Integer,Boolean> test =   new HashMap<Integer, Boolean>();
private static Example example = new Example();

就可以了。

java.lang.ExceptionInInitializerError的原因相关推荐

  1. 造成java.lang.ExceptionInInitializerError的原因

    可能是导入的jar包邮问题,建议查看java的jdk还有tomcat的jdk以及其他的包是否正确.

  2. java.lang.ExceptionInInitializerError

    java.lang.ExceptionInInitializerError 问题: 1.java.lang.ExceptionInInitializerError 1.1问题描述 Exception ...

  3. Fatal error compiling: java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags

    项目换用openjdk11后报错 Fatal error compiling: java.lang.ExceptionInInitializerError: com.sun.tools.javac.c ...

  4. jasper报错java.lang.ExceptionInInitializerError net.sf.jasperreports.engine.fill.JRBaseFiller

    项目迁移到新的centos上后,报错,并没有修改任何代码,网上搜了一大堆原因,说是jar包冲突,最后没办法只能一个一个去试 删除掉jasperreports-applet-5.0.0.jar,jasp ...

  5. java.lang.NullPointerException异常原因及解决

    java.lang.NullPointerException异常原因是因为创建了一个引用类型的变量却没有指向任何对象而又去通过这个引用类型变量加点的形式去访问非静态的方法及属性. 给出三种情况, 第一 ...

  6. 报 java.lang.ExceptionInInitializerError 的常见解决方法

    0. 如果你是遇到这个问题? java.lang.ExceptionInInitializerError Caused by: org.apache.ibatis.exceptions.Persist ...

  7. java.lang.ExceptionInInitializerError解决办法

    我仅仅是在Junit代码中执行了如下一行代码,竟然抛出了异常,我震惊了,  我只是构造了一个对象啊 DefaultHttpClient client = new DefaultHttpClient() ...

  8. 狂神说,mybatis-01 java.lang.ExceptionInInitializerError at com.kuang.dao.UserDaoTest.selectUser(UserD

    狂神说 MyBatis练习 mybatis-01程序练习报错: java.lang.ExceptionInInitializerError at com.kuang.dao.UserDaoTest.s ...

  9. java的stackoverflow_call stack - 导致java.lang.StackOverflow的原因

    实际上导致java.lang.StackOverflowError的原因通常是无意的递归. 对我来说,通常我打算为覆盖方法调用超级方法. 比如在这种情况下: publicclassVehicle{pu ...

最新文章

  1. PCL common中常见的基础功能函数
  2. 原来10张图就可以搞懂分布式链路追踪系统原理
  3. python3 Parallel Python
  4. 微信小程序中换行,空格(多个空格)写法
  5. WebApi捕捉异常的一套方案
  6. Linux中介绍who命令实例
  7. 手写springboot_Spring Boot 入门教程 | 图文讲解
  8. python中 tolist_python 列表,数组,矩阵两两转换tolist()的实例
  9. 新型 JhoneRAT 恶意软件攻击中东地区
  10. 天天生鲜商品详情页HTML+css
  11. EndnoteX9下载并安装
  12. 局域网传文件_跨平台传输文件方案大汇总(中篇)——可能全网最全的传输方案了...
  13. linux网络操作系统项目教程第三版答案,《Linux网络操作系统项目教程(RHEL7.4 CentOS 7.4)(第3版))》习题及答案...
  14. 如何整合JIRA、FishEye、Crucible进行CodeReview-摘自网络
  15. 磁盘格式怎么转换?Tuxera NTFS对磁盘进行不同格式转换教程
  16. [Spark好友推荐]
  17. 处理器后面的字母含义_科普向,笔记本cpu结尾字母的含义
  18. 汽车软件大战一触即发,诚迈科技如何重构整车“软架构”
  19. IntelliJ IDEA查看一个类的类图结构 show diagrams,用图表的方式查看类的关系层次
  20. your browser doesn't support html5,video

热门文章

  1. iview Table列表中增加字体图标
  2. 驱动精灵2007_畅玩Steam的Win10游戏掌机发布! |莱莎2新战斗动画,肉腿致命驱动~...
  3. rax+react hook 实现分页效果
  4. 分页查询时如何优化MySQL的性能?
  5. SpringBoot集成Beetl模板引擎之入门案例
  6. 个推微服务网关架构实践
  7. RxDownload2 文件下载太慢分析
  8. python3.6入门到高阶(全栈) day015 初识面向对象
  9. Navicat for MySQL 连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol
  10. jQuery插件之ajaxFileUpload(异步上传图片并实时显示,并解决onchange后ajaxFileUpload失效问题)...