在类中使用枚举时的Java.lang.NoClassDefFoundError

时间:2014-12-03 18:49:11

标签: java enums jetty

我在部署代码时遇到了一个奇怪的java.lang.NoClassDefFoundError。编译时没有错误,但是当我使用jetty部署它时,我收到错误说

org.springframework.beans.factory.BeanCreationException:
 Error creating bean with name 'org.springframework.dao.annotation.
                                  PersistenceExceptionTranslationPostProcessor#0'
 defined in class path resource [applicationContext-dao.xml]:
  Initialization of bean failed;

nested exception is 
 org.springframework.beans.factory.BeanCreationException:
  Error creating bean with name 'sessionFactory'
  defined in class path resource [applicationContext-dao.xml]:
   Invocation of init method failed;

nested exception is
 java.lang.NoClassDefFoundError: com/core/model/Webhook$Event

该课程如下所示

public class Webhook extends BaseObject implements Serializable {

    public enum Event {
        ORDER_CREATE,
        ORDER_UPDATE,
        ORDER_DELETE,
        TICKET_CREATE,
        TICKET_UPDATE,
        TICKET_DELETE,
        CUSTOMER_CREATE,
        CUSTOMER_UPDATE,
        CUSTOMER_DELETE,
        MENU_ITEM_UPDATE,
        CHECK_OFFER
    }

    private Event triggerEvent;

    public Event getTriggerEvent() {
        return triggerEvent;
    }

    public void setTriggerEvent(Event triggerEvent) {
        this.triggerEvent = triggerEvent;
    }

    public String getTriggerEventString() {
        return triggerEvent.toString();
    }

    public void setTriggerEventString(String triggerEvent) {
        this.triggerEvent = Event.valueOf(triggerEvent);
    }    
}

任何想法发生了什么?它甚至没有显示错误的内容。

1 个答案:

答案 0 :(得分:1)

  

java.lang.NoClassDefFoundError - 通常这表明我们之前尝试从类路径加载一个类,但是它失败了   出于某种原因 - 现在我们再次尝试使用该课程(因此   需要加载它,因为它上次失败了),但我们甚至没有去   尝试加载它,因为我们之前没有加载它(和   合理地怀疑我们会再次失败)。早先的失败   可能是ClassNotFoundException或ExceptionInInitializerError   (表示静态初始化块中的故障)或任何   其他一些问题。关键是,NoClassDefFoundError不是   必然是类路径问题。

当我在Weblogic中部署时,由于Weblogic缓存,我经常遇到NoClassDefFoundError。可以尝试清理jetty的缓存或重命名事件枚举,例如,Event1,然后再试一次?