我在部署代码时遇到了一个奇怪的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);
}
}
任何想法发生了什么?它甚至没有显示错误的内容。
答案 0 :(得分:1)
java.lang.NoClassDefFoundError - 通常这表明我们之前尝试从类路径加载一个类,但是它失败了 出于某种原因 - 现在我们再次尝试使用该课程(因此 需要加载它,因为它上次失败了),但我们甚至没有去 尝试加载它,因为我们之前没有加载它(和 合理地怀疑我们会再次失败)。早先的失败 可能是ClassNotFoundException或ExceptionInInitializerError (表示静态初始化块中的故障)或任何 其他一些问题。关键是,NoClassDefFoundError不是 必然是类路径问题。
当我在Weblogic中部署时,由于Weblogic缓存,我经常遇到NoClassDefFoundError。可以尝试清理jetty的缓存或重命名事件枚举,例如,Event1,然后再试一次?