部署vaadin到JBoss 7.0给我

问题描述:

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

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库?

+0

作品加入GWT-dev.jar时,GWT-user.jar,验证-API 1.0.0.GA.jar到WEB -INF \ lib目录手动。看起来eclipse插件没有这样做的意图,应该有更好的解决方案吗? –

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

vaadin.jar包含对gwt-user.jar的引用,但它在运行时不需要,仅在widgetset编译期间。 JBoss仍然希望加载导致问题的这些类。

有这个在JBoss中的bug报告:http://community.jboss.org/thread/169575?tstart=0

由于没有提到的,解决方法是包括GWT-user.jar在WEB-INF/lib目录与文件夹vaadin.jar部署包,似乎工作。

+0

另请参见:ticket http://dev.vaadin.com/ticket/7822 –

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

由于包名称com.google.gwt.user.client建议这应该在gwt-user.jar中。

只有在使用GWT编译客户端代码时才需要gwt-dev.jar。您使用的是附加组件?应该总是将附件(及其依赖关系)添加到WEB-INF/lib中,以使服务器端类可用于GWT编译器可用的应用程序和客户端代码。

问题的可能原因是(不必要的)依赖于客户端类,它在运行时在服务器中不可用。所以,你也可以检查你的代码是否有不必要的服务器端依赖到客户端GWT类(如HasWidgets)。

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