【问题标题】:Deploy vaadin to JBoss 7.0 gives me a ClassNotFoundException将 vaadin 部署到 JBoss 7.0 给了我一个 ClassNotFoundException
【发布时间】:2016-09-02 02:35:08
【问题描述】:

我在 Eclipse 中创建了一个新的 Vaadin (6.6.5) 项目,我尝试将它部署在 JBoss 7.0 上,但它给了我一个 GWT ClassNotFoundException

Caused by: java.lang.ClassNotFoundException: com.google.gwt.user.client.ui.HasWidgets from [Module "deployment.test.war:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:358)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:330)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:330)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:307)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:101)
    ... 64 more

我需要做一些额外的事情来部署 gwt 库吗?

【问题讨论】:

  • 手动将 gwt-dev.jar、gwt-user.jar、validation-api-1.0.0.GA.jar 添加到 WEB-INF\lib 目录时有效。 eclipse插件的本意似乎不是这样,应该有更好的解决方案吧?

标签: eclipse jboss vaadin


【解决方案1】:

似乎编译 Vaadin 客户端小部件集所需的 gwt-user.jar 中的某些 GWT 类被 JBoss7 不必要地加载了。

vaadin.jar 包含对 gwt-user.jar 的引用,但在运行时不需要它,仅在小部件集编译时才需要。 JBoss 仍然想加载这些导致问题的类。

JBoss 中有一个错误报告:http://community.jboss.org/thread/169575?tstart=0

正如那里提到的,解决方法是将 gwt-user.jar 包含到带有 vaadin.jar 的 WEB-INF/lib 文件夹中的部署包中,似乎可行。

【讨论】:

    【解决方案2】:

    Vaadin Eclipse 插件为 gwt jar 文件创建库依赖项,通常 Eclipse 应该在部署时处理运行时类路径。

    正如包名 com.google.gwt.user.client 所暗示的,这应该在 gwt-user.jar 中。

    只有在使用 GWT 编译客户端代码时才需要 gwt-dev.jar。

    您在使用附加组件吗?应始终将附加组件(及其依赖项)添加到 WEB-INF/lib,以使服务器端类可用于应用程序,而客户端代码可用于 GWT 编译器。

    问题的可能原因是(不必要的)对客户端类的依赖,该类在运行时在服务器中不可用。因此,您还可以检查您的代码是否存在对客户端 GWT 类(如 HasWidgets)的不必要的服务器端依赖项。

    【讨论】:

      【解决方案3】:

      检查您的代码以确保您不会从您的代码中意外访问此 com.google.gwt.** 类。如上所述,服务器中无需部署gwt库。

      【讨论】:

        【解决方案4】:

        Vaadin 现在发布了一个插件来解决这个问题,请参阅 https://vaadin.com/directory#!addon/vaadin-application-server-class-loader-workaround

        【讨论】:

          猜你喜欢
          • 2016-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-01
          • 2014-07-25
          • 1970-01-01
          • 1970-01-01
          • 2018-11-26
          相关资源
          最近更新 更多