2010-10-26 12 views
10

¿Podría alguien decirme lo que debo hacer para habilitar el soporte de Guava en GWT?Usando Guava con GWT

He descargado guayaba R07 y ahí están los dos archivos siguientes:

  • guayaba-r07.jar
  • guayaba-R07-gwt.jar

tengo unos cuantos preguntas con respecto a esto:

  1. ¿Adónde van estos archivos? Supongo que el Jar estándar está disponible para mi IDE para la codificación, y que ambos están disponibles para el compilador de GWT para construir el JavaScript.
  2. ¿Debo agregar todos los archivos .gwt.xml de -gwt.jar en el archivo gwt.xml principal de mi proyecto o solo las partes que necesito?
  3. Hay otros tarros en el maletero del proyecto Guava & GWT (es decir, no en la descarga, como uno para jsr305) que creo que puedo necesitar, pero no estoy seguro.

Disculpa, normalmente no tengo problemas con este tipo de cosas, pero no sé qué es lo que ocurre.

FYI Estoy usando GWT 1.6 por el momento, pero espero pasar a 2 pronto. Si la guayaba no es compatible con 1.6, eso no es un problema.

actualización

tengo los siguientes archivos en una carpeta llamada gwtlib:

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

Y mi script Ant hace lo siguiente:

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

ejecutar el comando anterior, consigo los siguientes errores:

  • Errores en 'tarro: archivo: ///project/gwtlibs/guava-r07-gwt.jar/com/google/común /collect/Constraints.java'
  • Línea 254: el método subLista (int, int) no está definida para el tipo de lista

Sin el frasco JSR en la ruta de clase, consigo los siguientes errores:

  • La importación javax.anotación no se puede resolver
  • anulable no se puede resolver a un tipo

Gracias

Rich

+0

Aquí hay una pregunta similar con respuestas: http://stackoverflow.com/questions/2005687/guava -libraries-and-gwt/6201161 # 6201161 – Hbf

+0

En realidad usando sin problemas. http://pgt.de/2012/07/11/using-guava-with-gwt/ –

+0

Gracias Papick - Formulé mi pregunta hace casi 2 años - desde entonces tanto GWT como la Guava han evolucionado sustancialmente, y las versiones recientes de GWT y Guava son definitivamente compatibles entre sí. – Rich

Respuesta

3

Guava no es compatible con GWT 1.6. List.subList, en particular, se agrega a GWT en GWT 2. La primera versión que admitimos es GWT 2.0.4

+3

Esta respuesta en realidad no explica cómo hacer que la guayaba funcione bajo GWT. Por favor, actualízala en consecuencia. – Gili

+1

Conseguir que la Guava funcione en GWT 2.0.4 y superior es bastante fácil, solo hay que incluirlo en el classpath como lo haría con cualquier otra biblioteca (teniendo en cuenta los Jars específicos de GWT) y el compilador de GWT hace su magia. La respuesta de Hayward a mi pregunta original (que era básicamente "¿por qué no funciona la guayaba en GWT 1.6?") Fue suficiente para ver que estaba perdiendo el tiempo tratando de hacer que funcione. – Rich

13
  1. Añadir estos frascos a la ruta de clases. Si está utilizando IDE, agréguelos a su ruta de compilación haciendo clic derecho en "Bibliotecas de referencia" en su Package Exporer, seleccione "Configurar ruta de compilación" y agréguelos como JAR externos.
  2. Solo necesita heredar los módulos que planea usar en su archivo .gwt.xml. Por ejemplo, si solo usa el paquete common.collect, solo agregue <inherits name="com.google.common.collect.Collect" />
  3. Probablemente no necesite jsr305.jar, pero si lo hace, simplemente agréguelo del mismo modo que lo hizo con los otros frascos.

Guava debería funcionar bien con GWT 1.6, si no es así, es probable que sea un error.

+0

He editado mi pregunta con más información ... ¿arroja algo de luz sobre el tema? – Rich

+0

Parece que necesita jsr305.jar entonces. En cuanto a su otro problema, no veo qué podría causar eso ... –

+1

Sin embargo, querrá asegurarse de seguir las clases con la anotación @GwtCompatible. –