2011-08-25 10 views
5

Ho creato un nuovo Vaadin (6.6.5) del progetto in Eclipse e ho cercato di distribuirlo su JBoss 7.0 ma mi dà un GWT ClassNotFoundExceptionDeploy Vaadin a JBoss 7.0 mi dà un 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 

Devo fare qualcosa in più per implementare le librerie gwt?

+0

Opere quando si aggiungono gwt-dev.jar, GWT-user.jar, validazione-api-1.0.0.GA.jar al WEB -INF directory \ lib manualmente. Non sembra che l'intento del plugin di eclipse sia così, dovrebbe esserci una soluzione migliore, giusto? –

risposta

5

Sembra che alcune classi GWT in gwt-user.jar richieste per la compilazione del lato client di Vaadin widgetset vengano caricate da JBoss7 senza necessità.

vaadin.jar contiene riferimenti a gwt-user.jar ma non è necessario durante il runtime, solo durante il tempo di compilazione di widgetset. Still JBoss vuole caricare queste classi causando il problema.

C'è un bug report in JBoss per questo: http://community.jboss.org/thread/169575?tstart=0

Come accennato c'è, soluzione è quella di includere GWT-user.jar al pacchetto di distribuzione in cartella WEB-INF/lib con il vaadin.jar, sembra lavoro.

+0

Vedi anche: ticket http://dev.vaadin.com/ticket/7822 –

1

Il plug-in Vaadin Eclipse crea dipendenze di libreria per i file gwt jar e in genere Eclipse deve occuparsi del percorso di classe di runtime durante la distribuzione.

Poiché il nome del pacchetto com.google.gwt.user.client suggerisce che questo dovrebbe essere in gwt-user.jar.

Il file gwt-dev.jar dovrebbe essere necessario solo durante la compilazione del codice lato client con GWT.

Stai utilizzando componenti aggiuntivi? I componenti aggiuntivi (e le loro dipendenze) dovrebbero sempre essere aggiunti a WEB-INF/lib per rendere disponibili le classi sul lato server per l'applicazione e il codice lato client disponibile per il compilatore GWT.

Sulla possibile causa del problema c'è una dipendenza (non necessaria) per la classe lato client che non è disponibile nel server in fase di runtime. Quindi, potresti anche controllare il tuo codice per le dipendenze non necessarie sul lato server delle classi GWT lato client (come HasWidgets).

1

Controlla il codice per assicurarti di non accedere accidentalmente a questa classe com.google.gwt. ** dal codice. Come detto sopra, non è necessario distribuire librerie gwt nel server.