java ExceptionInInitializerError 实际遇到的问题
2014-09-09 23:02
816 查看
这个问题通常是静态变量初始化顺序出了问题,通常出现在单例模式中.
code:
输出:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
at Tom.<init>(Tom.java:12)
at Tom.<clinit>(Tom.java:7)
getInstance()被调用,类被加载,静态变量被初始化,然而在变量tom初始化的时候,构造方法被调用,对象创建的时候不会给静态的test初始化,结果test没有被初始化,
构造器中就直接使用了test.
换个顺序就可以了:
code:
import java.util.HashMap; import java.util.Map; public class Tom { private static Tom tom = new Tom(); private static Map<Integer,Boolean> test = new HashMap<Integer, Boolean>(); private Tom() { test.put(1, true); } public static Tom getInstance() { return tom; } public static void main(String[] args){ getInstance(); } }
输出:
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
at Tom.<init>(Tom.java:12)
at Tom.<clinit>(Tom.java:7)
getInstance()被调用,类被加载,静态变量被初始化,然而在变量tom初始化的时候,构造方法被调用,对象创建的时候不会给静态的test初始化,结果test没有被初始化,
构造器中就直接使用了test.
换个顺序就可以了:
import java.util.HashMap; import java.util.Map; public class Tom { private static Map<Integer,Boolean> test = new HashMap<Integer, Boolean>(); private static Tom tom = new Tom(); private Tom() { test.put(1, true); } public static Tom getInstance() { return tom; } public static void main(String[] args){ getInstance(); } }
相关文章推荐
- jmeter3.2生成图形html遇到的问题Error in NonGUIDriver java.lang.IllegalArgumentException: Results file:log is not empty
- java.lang.ExceptionInInitializerError(HIBERNATE问题)
- 解决Eclipse启动JBoss7.1异常的问题(Exception in thread "main" java.lang.ExceptionInInitializerError)
- 我遇到的bug_使用spring+junit4时_java.lang.ExceptionInInitializerError
- 1. spring boot项目创建过程中遇到的问题(一):Exception in thread "main" java.lang.UnsupportedClassVersionError
- 解决出现 java.lang.ExceptionInInitializerError错误问题
- spring+junit4时用Junit单元测试遇到的bug:java.lang.ExceptionInInitializerError
- spring+junit4时用Junit单元测试遇到的bug:java.lang.ExceptionInInitializerError
- 在工厂模式中使用Properties配置文件出现java.lang.ExceptionInInitializerError的问题
- java.lang.ExceptionInInitializerError的原因(转)
- Android错误:java.lang.ExceptionInInitializerError,java.lang.UnsatisfiedLinkError,
- java.lang.ExceptionInInitializerError异常解决小结
- MyEclipse中用Tomcat部署项目时遇到的问题1:java.lang.UnsupportedClassVersionError: Bad version number in .class file
- Exception in thread "main" java.lang.ExceptionInInitializerError
- android java.lang.ExceptionInInitializerError
- zip 文件解压缩问题解决 java.util.zip.ZipException:error in opening zip file
- 学习笔记:java.lang.ExceptionInInitializerError
- java.lang.ExceptionInInitializerError
- Android中库项目出现java.util.zip.ZipException: error in opening zip file的问题
- java.lang.ExceptionInInitializerError hibernate 错误解决