简体   繁体   English

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

[英]Getting Error “Exception in thread ”main“ java.lang.ExceptionInInitializerError”

I am trying to initialize HashMap with Enum Month. 我试图用枚举月初始化HashMap。 However, getting an error like: "Exception in thread "main" java.lang.ExceptionInInitializerError". 但是,出现类似以下错误:“线程“主”中的异常java.lang.ExceptionInInitializerError”。 Please let me know why I am getting this error. 请让我知道为什么我收到此错误。 I am getting this in static main class method and for line ChatGroups.initializeMap(); 我在静态主类方法和ChatGroups.initializeMap();行中获取此信息ChatGroups.initializeMap();

package static_initialization;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;

public class ChatGroups {
    public static final Map<String, Month> months = new HashMap<String, Month>() {{
        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);
    }};

    public static void initializeMap() {
        System.out.println();
    }
}


package static_initialization;

public enum Month {
    January(0),
    February(1),
    March(2),
    April(3),
    May(4),
    June(5),
    July(6),
    August(7),
    September(8),
    October(9),
    November(10),
    December(11);

    private int month;

    Month(int i) {
        month = i;
    }
}


package static_initialization;

public class Main {
    public static void main(String[] args) {
        initializeMaps();
    }
    public static void initializeMaps() {

        try {
            ChatGroups.initializeMap();
        } catch (Exception ex) {
            System.out.println("Neelabh exception = " + ex);
        }
    }
}

Please find the stack trace 请找到堆栈跟踪

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)

It should be: 它应该是:

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);
}};

months.put() leads to NullPointerException , since the static variable months is still null when the put statements are executed. months.put()导致NullPointerException ,因为执行put语句时static变量months仍然为null

As an alternative, avoid creating an anonymous class instance, and instead write: 另外,请避免创建匿名类实例,而应编写:

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在线程“主”中获取异常java.lang.ExceptionInInitializerError异常 - Getting Exception in thread “main” java.lang.ExceptionInInitializerError Exception Spring Error-线程“ main”中的异常java.lang.ExceptionInInitializerError - Spring Error- Exception in thread “main” java.lang.ExceptionInInitializerError 线程“主”中的异常java.lang.ExceptionInInitializerError(Clojure) - Exception in thread “main” java.lang.ExceptionInInitializerError (Clojure) 线程“主”中的休眠异常java.lang.ExceptionInInitializerError - Hibernate Exception in thread “main” java.lang.ExceptionInInitializerError Eclipse - Drools - 线程“main”中的异常 java.lang.ExceptionInInitializerError - Eclipse - Drools - Exception in thread "main" java.lang.ExceptionInInitializerError 运行简单的Hibernate应用程序“线程“ main”中的异常“ java.lang.ExceptionInInitializerError”时遇到此错误 - I got this error while running simple Hibernate application “Exception in thread ”main“ java.lang.ExceptionInInitializerError” 使用log4j时出现错误“线程“ main”中的异常“ java.lang.ExceptionInInitializerError” - Error “Exception in thread ”main“ java.lang.ExceptionInInitializerError” while working with log4j 线程“主”中的异常java.lang.ExceptionInInitializerError原因:java.lang.NullPointerException - Exception in thread “main” java.lang.ExceptionInInitializerError Caused by: java.lang.NullPointerException 由 java.lang.RuntimeException 引起的线程“main”java.lang.ExceptionInInitializerError 中的异常:无法实例 KieServices - Exception in thread "main" java.lang.ExceptionInInitializerError caused by java.lang.RuntimeException: Unable to instance KieServices java.lang.ExceptionInInitializerError异常 - java.lang.ExceptionInInitializerError exception
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM