java - NoClassDefFoundError 无法初始化类

标签 java

我有一个类,它正在从数据库获取值的 List,我需要将这些值设置为 map

public class LocationField {
    @Resource
    protected static SearchDaoImpl searchDao;
    public static List<Object[]> list = searchDao.getResult();
    private static final Map<String,LocationField> TYPES = new  LinkedHashMap<String, LocationField>();
    static{
       new LocationField(list);
    }

    public LocationField() {
      //do nothing
    }

    public LocationField(List<Object[]> listObject) {
       for (Object[] listObject: list)
            new LocationField(listObject[0].toString,listObject[1].toString)
    }

    private String type;
    private String friendlyType;
    public LocationField(final String type, final String friendlyType) {
        this.friendlyType = friendlyType;
        setTypes(type);
    }

    private void setType(final String type) {
        this.type=type;
        if (!TYPES.containsKey(type))
            TYPES.put(type,this)
        }
    }
}

上面的代码对于静态数据运行良好,并且设置为map对象例如:

LocationField field1 = new LocationField("ok", "okay");
LocationField field2 = new LocationField("hi", "hai");

但是我需要从database获取值,并且需要设置为map对象,所以,我改变了一些内容,如第一段代码所示,但是问题是我收到异常消息

嵌套异常是 java.lang.NoClassDefFoundError:无法初始化类 com.mycompany.LocationField

它没有显示号来找出实际发生异常的位置。 我无法弄清楚这是什么原因?据我所知,上面的类在运行时不可用于 jvm ,但为什么呢?谁能帮我解决这个问题吗?

最佳答案

发生这种情况是因为您的变量是静态的,并且在 consutructir 中您试图更改该变量。它将尝试重新初始化,但这是不可能的。

关于java - NoClassDefFoundError 无法初始化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37683858/

相关文章:

java - Future.cancel() 没有取消 ScheduledExecutorService 的计划执行

Java:线程中出现异常 "AWT-EventQueue-0"java.util.ConcurrentModificationException

java - AWT中Canvas有什么用?

java - 无法使用三星手机创建的 java 加载 JPEG

java - 从 servlet 打印/输出 jsp 页面

java - Android BufferedWriter : Empty File Saved.

java - 不将自定义java对象保存在android studio的firebase中

java - 如何从非 Activity 类更改 TextView 的值

java - 如何查询集合的复合元素? (无法为非实体集合创建元素连接)

java - 如何在不改变时间的情况下改变时区?