2011-08-25 55 views
5

我創建了一個新的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插件沒有這樣做的意圖,應該有更好的解決方案嗎? –

回答

5

似乎編譯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 –

1

Vaadin Eclipse插件爲gwt jar文件創建了庫依賴關係,通常Eclipse在部署時應該處理運行時類路徑。

由於包名稱com.google.gwt.user.client建議這應該在gwt-user.jar中。

只有在使用GWT編譯客戶端代碼時才需要gwt-dev.jar。您使用的是附加組件?應該總是將附件(及其依賴關係)添加到WEB-INF/lib中,以使服務器端類可用於GWT編譯器可用的應用程序和客戶端代碼。

問題的可能原因是(不必要的)依賴於客戶端類,它在運行時在服務器中不可用。所以,你也可以檢查你的代碼是否有不必要的服務器端依賴到客戶端GWT類(如HasWidgets)。

1

檢查您的代碼以確保您不會意外地從代碼中訪問此com.google.gwt。**類。如上所述,不需要在服務器中部署gwt庫。