获取错误“;“线程中的异常”;“主要”;java.lang.ExceptionInInitializerError“;

获取错误“;“线程中的异常”;“主要”;java.lang.ExceptionInInitializerError“;,java,Java,我正在尝试使用Enum Month初始化HashMap。但是,得到一个错误,如:“线程中的异常”main“java.lang.ExceptionInInitializerError”。请让我知道为什么我会出现这个错误。我在静态主类方法中得到了这一点,对于行ChatGroups.initializeMap() 包静态_初始化; 导入java.lang.reflect.Type; 导入java.util.HashMap; 导入java.util.Map; 公共类聊天组{ public static

我正在尝试使用Enum Month初始化HashMap。但是,得到一个错误,如:“线程中的异常”main“java.lang.ExceptionInInitializerError”。请让我知道为什么我会出现这个错误。我在静态主类方法中得到了这一点,对于行
ChatGroups.initializeMap()

包静态_初始化;
导入java.lang.reflect.Type;
导入java.util.HashMap;
导入java.util.Map;
公共类聊天组{
public static final Map months=new HashMap(){{
月份。投入(“一月”,月份。一月);
月份。投入(“二月”,月份。二月);
月份。投入(“三月”,月份。三月);
月。卖出(“四月”,月。四月);
月份。投入(“六月”,月份。六月);
月份。投入(“七月”,月份。七月);
月。卖出(“八月”,月。八月);
月。卖出价(“九月”,月。九月);
月。投入(“十月”,月。十月);
月份。投入(“十一月”,月份。十一月);
月。卖出(“十二月”,月。十二月);
}};
公共静态无效初始值映射(){
System.out.println();
}
}
包静态初始化;
公众普查月{
一月(0),
二月(一),
三月二日,
四月三日,
五月四日,
六月五日,
七月六日,
八月七日,
九月八日,
10月9日,
11月10日,,
12月(11日);
私人整数月;
月份(国际一){
月=i;
}
}
包静态初始化;
公共班机{
公共静态void main(字符串[]args){
初始化映射();
}
公共静态void initializeMaps(){
试一试{
ChatGroups.initializeMap();
}捕获(例外情况除外){
System.out.println(“Neelab异常=”+ex);
}
}
}
请找到堆栈跟踪

Exception in thread "main" java.lang.ExceptionInInitializerError
    at static_initialization.Main.initializeMaps(Main.java:10)
    at static_initialization.Main.main(Main.java:5)
Caused by: java.lang.NullPointerException
    at static_initialization.ChatGroups$1.<init>(ChatGroups.java:9)
    at static_initialization.ChatGroups.<clinit>(ChatGroups.java:8)
线程“main”java.lang.ExceptionInInitializeError中的异常 在static_initialization.Main.initializeMaps(Main.java:10)中 在static_initialization.Main.Main(Main.java:5)中 原因:java.lang.NullPointerException 静态初始化时.ChatGroups$1。(ChatGroups.java:9) 在static_initialization.ChatGroups.(ChatGroups.java:8)
它应该是:

public static final Map<String, Month> months = new HashMap<String, Month>() {{
    put("Jan", Month.January);
    put("Feb", Month.February);
    put("Mar", Month.March);
    put("Apr", Month.April);
    put("Jun", Month.June);
    put("Jul", Month.July);
    put("Aug", Month.August);
    put("Sep", Month.September);
    put("Oct", Month.October);
    put("Nov", Month.November);
    put("Dec", Month.December);
}};

请共享完整的stacktrace,错误消息只是其中的一部分。整个堆栈通常会提供更多信息information@Wisthler在末尾更新堆栈跟踪。只使用
put
而不是
months。将
放入静态initializer@rdas你能解释一下为什么我需要
这个.put
而不是
个月.put
。在静态初始化期间,
months
指针尚未绑定到您正在定义的地图对象。所以当代码运行时它仍然是空的。
public static final Map<String, Month> months = new HashMap<String, Month>() {{
    put("Jan", Month.January);
    put("Feb", Month.February);
    put("Mar", Month.March);
    put("Apr", Month.April);
    put("Jun", Month.June);
    put("Jul", Month.July);
    put("Aug", Month.August);
    put("Sep", Month.September);
    put("Oct", Month.October);
    put("Nov", Month.November);
    put("Dec", Month.December);
}};
public static final Map<String, Month> months = new HashMap<String, Month>();
static {
    months.put("Jan", Month.January);
    months.put("Feb", Month.February);
    months.put("Mar", Month.March);
    months.put("Apr", Month.April);
    months.put("Jun", Month.June);
    months.put("Jul", Month.July);
    months.put("Aug", Month.August);
    months.put("Sep", Month.September);
    months.put("Oct", Month.October);
    months.put("Nov", Month.November);
    months.put("Dec", Month.December);
}