Vaadin:SubscriberExceptionHandler 上的 NoClassDefFoundError?
Vaadin: NoClassDefFoundError on SubscriberExceptionHandler?
尝试实现与 Dashboard demo 中相同类型的 Event
和 EventBus
内容,我在尝试 运行 应用程序时遇到此错误:
=================================================================
Vaadin is running in DEBUG MODE.
Add productionMode=true to web.xml to disable debug features.
To show debug window, add ?debug to your application URL.
=================================================================
Aug 31, 2015 3:06:08 PM com.vaadin.server.DefaultErrorHandler doDefault
SEVERE:
java.lang.NoClassDefFoundError: com/google/common/eventbus/SubscriberExceptionHandler
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2472)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
at info.chrismcgee.sky.scheduling.SchedulingUI.<init>(SchedulingUI.java:48)
SchedulingUI.java
中的第 48 行是:
private final SchedulingEventBus schedulingEventbus = new SchedulingEventBus();
(我基本上只是将所有 "Dashboard" 引用替换为 "Scheduling" 以符合我的网络应用程序。)当然,我仍在努力弄清楚这无济于事SchedulingEvent.java
和 SchedulingEventBus.java
的要点以及它们的工作原理。 (还是新手。)
编辑 09/01/2015: 为了澄清我重命名的内容,这是我的 SchedulingEventBus.java
文件:
package info.chrismcgee.sky.event;
import info.chrismcgee.sky.scheduling.SchedulingUI;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.SubscriberExceptionContext;
import com.google.common.eventbus.SubscriberExceptionHandler;
/**
* A simple wrapper for Guava event bus. Defines static convenience methods for
* relevant actions.
*
* @author Marketing
*
*/
public class SchedulingEventBus implements SubscriberExceptionHandler {
private final EventBus eventBus = new EventBus(this);
public static void post(final Object event) {
SchedulingUI.getSchedulingEventbus().eventBus.post(event);
}
public static void register(final Object object) {
SchedulingUI.getSchedulingEventbus().eventBus.register(object);
}
public static void unregister(final Object object) {
SchedulingUI.getSchedulingEventbus().eventBus.unregister(object);
}
@Override
public void handleException(final Throwable exception,
final SubscriberExceptionContext context) {
exception.printStackTrace();
}
}
将以下依赖项添加到 ivy.xml 文件:
<dependency org="com.google.guava" name="guava" rev="18.0"/>
我在尝试做完全相同的事情时遇到了完全相同的问题。这清除了 NoClassDefFoundError。
尝试实现与 Dashboard demo 中相同类型的 Event
和 EventBus
内容,我在尝试 运行 应用程序时遇到此错误:
=================================================================
Vaadin is running in DEBUG MODE.
Add productionMode=true to web.xml to disable debug features.
To show debug window, add ?debug to your application URL.
=================================================================
Aug 31, 2015 3:06:08 PM com.vaadin.server.DefaultErrorHandler doDefault
SEVERE:
java.lang.NoClassDefFoundError: com/google/common/eventbus/SubscriberExceptionHandler
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2472)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
at info.chrismcgee.sky.scheduling.SchedulingUI.<init>(SchedulingUI.java:48)
SchedulingUI.java
中的第 48 行是:
private final SchedulingEventBus schedulingEventbus = new SchedulingEventBus();
(我基本上只是将所有 "Dashboard" 引用替换为 "Scheduling" 以符合我的网络应用程序。)当然,我仍在努力弄清楚这无济于事SchedulingEvent.java
和 SchedulingEventBus.java
的要点以及它们的工作原理。 (还是新手。)
编辑 09/01/2015: 为了澄清我重命名的内容,这是我的 SchedulingEventBus.java
文件:
package info.chrismcgee.sky.event;
import info.chrismcgee.sky.scheduling.SchedulingUI;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.SubscriberExceptionContext;
import com.google.common.eventbus.SubscriberExceptionHandler;
/**
* A simple wrapper for Guava event bus. Defines static convenience methods for
* relevant actions.
*
* @author Marketing
*
*/
public class SchedulingEventBus implements SubscriberExceptionHandler {
private final EventBus eventBus = new EventBus(this);
public static void post(final Object event) {
SchedulingUI.getSchedulingEventbus().eventBus.post(event);
}
public static void register(final Object object) {
SchedulingUI.getSchedulingEventbus().eventBus.register(object);
}
public static void unregister(final Object object) {
SchedulingUI.getSchedulingEventbus().eventBus.unregister(object);
}
@Override
public void handleException(final Throwable exception,
final SubscriberExceptionContext context) {
exception.printStackTrace();
}
}
将以下依赖项添加到 ivy.xml 文件:
<dependency org="com.google.guava" name="guava" rev="18.0"/>
我在尝试做完全相同的事情时遇到了完全相同的问题。这清除了 NoClassDefFoundError。