java - Vaadin:SubscriberExceptionHandler 上出现 NoClassDefFoundError?

标签 java vaadin noclassdeffounderror event-bus

尝试实现相同类型的EventEventBus Dashboard demo 中的内容,当我尝试运行应用程序时收到此错误:

=================================================================
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();

(我基本上只是将所有“仪表板”引用替换为"dispatch"以符合我的网络应用程序。)当然,我仍在试图找出 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。

关于java - Vaadin:SubscriberExceptionHandler 上出现 NoClassDefFoundError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338930/

相关文章:

android - API 16 至 19 上 AsyncTask 中的 java.lang.ClassNotFoundException

noclassdeffounderror - 在 Google App Engine 项目中找不到 com.google.appengine.tools.enhancer.Enhance

java - FreeMarker 和 JSP 2 标记文件

java - Spring Boot 如何提供 spring-data-jpa v1.10.3.RELEASE

gradle - 由于版本太旧错误,无法将gradle wrapper任务添加到旧项目

java - 用数据填充网格 (Vaadin)

java - AndroidStudio升级到1.0后的NoClassDefFoundError(12月8日)

java - 从输出流中获取输入流

java - 在多个线程上使用 Thread.join 出现 NullPointer 异常

java - UI/VaadinSession 超时