2010-10-26 12 views
10

Qualcuno potrebbe dirmi cosa devo fare per abilitare il supporto di Guava in GWT.Utilizzo di Guava con GWT

Ho scaricato Guava R07 e lì ci sono i seguenti due file:

  • guava-r07.jar
  • guava-R07-gwt.jar

ho un paio domande a riguardo:

  1. Dove vanno questi file? Immagino che lo standard Jar sia reso disponibile per il mio IDE per la codifica e che entrambi siano resi disponibili al compilatore GWT per la creazione del codice JavaScript?
  2. Devo aggiungere tutti i file .gwt.xml dal file -gwt.jar al file gwt.xml principale del mio progetto o solo le parti di cui ho bisogno?
  3. Ci sono altri barattoli nel bagagliaio del progetto GAVA & Guava (cioè non nel download, come quello per jsr305) che penso possa aver bisogno, ma non ne sono sicuro.

Scusa, normalmente non ho problemi con questo genere di cose, ma non riesco a capire cosa va dove.

FYI Sto utilizzando GWT 1.6 per il momento, ma spero di passare presto a 2. Se Guava non è compatibile con 1.6 non è un problema.

Aggiornamento

ho i seguenti file in una cartella denominata gwtlib:

  • guava-R07-gwt.jar
  • guava-r07.jar
  • jsr305-1.3.9. jar

E il mio script Ant esegue le seguenti operazioni:

<path id="project.class.path"> 
    <fileset dir="gwtlibs" includes="guava-r07.jar"/> 
    <fileset dir="gwtlibs" includes="guava-r07-gwt.jar"/> 
    <fileset dir="gwtlibs" includes="jsr305-1.3.9.jar"/> 
    <pathelement location="${gwt.sdk}/gwt-user.jar"/> 
    <fileset dir="${gwt.sdk}" includes="gwt-dev*.jar"/> 
</path> 

<target name="gwtc"> 
    <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> 
     <classpath> 
      <pathelement location="app"/> 
      <path refid="project.class.path"/> 
     </classpath> 
     <jvmarg value="-Xmx256M"/> 
     <arg value="-localWorkers"/> 
     <arg value="2"/> 
     <arg value="-war"/> 
     <arg value="gwt-public"/> 
     <arg value="Main"/> 
    </java> 
</target> 

eseguire il comando sopra, ottengo i seguenti errori:

  • Errori nella 'jar: file:! ///project/gwtlibs/guava-r07-gwt.jar/com/google/comune /collect/Constraints.java'
  • linea 254: il metodo sottolista (int, int) non è definito per la Lista tipo

Senza il vasetto JSR nel classpath, ottengo i seguenti errori:

  • L'importazione javax.l'annotazione non può essere risolto
  • Nullable non può essere risolto a un tipo

Grazie

Rich

+0

Ecco una domanda simile con le risposte: http://stackoverflow.com/questions/2005687/guava -libraries-and-gwt/6201161 # 6201161 – Hbf

+0

Utilizzato senza problemi. http://pgt.de/2012/07/11/using-guava-with-gwt/ –

+0

Grazie Papick - Ho fatto la mia domanda quasi 2 anni fa - da allora GWT e Guava si sono evoluti in modo sostanziale e le versioni recenti di GWT e Guava sono decisamente compatibili tra loro. – Rich

risposta

3

Guava non è compatibile con GWT 1.6. List.subList, in particolare, viene aggiunto a GWT in GWT 2. La prima versione che abbiamo completamente supportato è GWT 2.0.4

+3

Questa risposta in realtà non spiega come far funzionare Guava sotto GWT. Si prega di aggiornarlo di conseguenza. – Gili

+1

Far funzionare Guava in GWT 2.0.4 e versioni successive è abbastanza semplice, basta includerlo nel classpath come faresti con qualsiasi altra libreria (tenendo presente qualsiasi Jars specifico per GWT) e il compilatore GWT fa la sua magia. La risposta di Hayward alla mia domanda iniziale (che in pratica era "perché Guava non funziona su GWT 1.6?") È stata sufficiente per farmi vedere che stavo sprecando il mio tempo cercando di farlo funzionare. – Rich

13
  1. Aggiungere questi vasi al classpath. Se stai utilizzando IDE, aggiungili al tuo percorso di costruzione facendo clic con il pulsante destro del mouse su "Biblioteche di riferimento" nel tuo pacchetto Exporer, seleziona "Configura percorso di creazione" e aggiungili come JAR esterni.
  2. È necessario ereditare solo i moduli che si intende utilizzare nel file .gwt.xml. Ad esempio, se usi solo il pacchetto common.collect, aggiungi <inherits name="com.google.common.collect.Collect" />
  3. Probabilmente non hai bisogno di jsr305.jar, ma se lo fai, aggiungilo nello stesso modo in cui hai aggiunto gli altri barattoli.

Guava dovrebbe funzionare bene con GWT 1.6, se così non fosse, probabilmente è un bug.

+0

Ho modificato la mia domanda con ulteriori informazioni ... fa luce sull'argomento? – Rich

+0

Sembra che tu abbia bisogno di jsr305.jar. Per quanto riguarda il tuo altro problema, non vedo che cosa potrebbe causare ... –

+1

Dovrai comunque assicurarti di rispettare le classi con l'annotazione @GwtCompatible. –