2010-03-08 2 views
7

Questo è un problema semplice, ma sto avendo problemi con esso ...Utilizzo di Google Collection comune in GWT

Sto cercando di utilizzare il metodo di Google di raccolta comune Objects.equal() in un codice client GWT, ma sono m Continuo a ricevere l'errore

20: 12: 10.001 [eRRORE] [gwt_regex] linea 39: Nessun codice sorgente è disponibile per tipo com.google.common.base.Objects; hai dimenticato di ereditare un modulo richiesto ?

Provato a Google per la risposta, ma non è stato possibile trovare alcuna risposta in merito a questo - tutti hanno appena detto "la raccolta di Google dovrebbe funzionare fuori dagli schemi con GWT".

risposta

2

La risposta di Hilbrand non ha funzionato (mi ha dato un sacco di errori quando sono state caricate le classi di raccolta di Google), e ho trovato un'altra soluzione.

  1. Partenza google raccolta - http://google-collections.googlecode.com/svn/trunk/
  2. Esegui il target formica "jargwt"
  3. Aggiungere il file jar built "google-raccogliere-GWT-snapshot.jar" per classpath dell'applicazione.
  4. Aggiungi il modulo dell'applicazione GWT.

La ragione per cui la soluzione di Hilbrand non ha funzionato è stato perché la raccolta di Google contiene un sacco di file java gwt-incompaitable, e il file del modulo Collect.gwt.xml seleziona tutti i file di Java sotto Google Collection.

6

È necessario ereditare il file del modulo:

<inherits name='com.google.common.Collect.gwt.xml' /> 

e aggiungere i file di origine di entrambe le collezioni e file specifici supplementari GWT. I primi sono nel file zip della pagina del progetto, questi ultimi sono disponibili nella cartella gwt nel trunk del progetto collezioni: http://code.google.com/p/google-collections/source/browse/#svn/trunk/gwt

+0

Grazie, ci proverò appena ho vai a casa. –

+0

Questo non funzionerà. Devi rimuovere '.gwt.xml'. – slartidan

3

Per risolvere il tuo errore (Nessun codice sorgente è disponibile per il tipo com.google.common.base.Objects), è sufficiente includere modulo base GWT:

<inherits name="com.google.common.base.Base" /> 

Se si desidera utilizzare classi correlate alle collezioni, è necessario includere Collect modulo GWT:

<inherits name="com.google.common.collect.Collect" /> 

PS: testata con GUAVA GWT 17,0

+0

Ereditare 'Base' è obsoleto - è già implicitamente referenziato da' Collect'. – slartidan

0

ho avuto lo stesso problema, i passaggi qui sotto risolto il mio problema.

ho trovato il "guava-15.0.jar" nel percorso di generazione poi ho aggiunto un altro "guava-GWT-15.0.jar" file per costruire il percorso