使用Guava和GWT

时间:2010-10-26 12:12:57

标签: gwt guava

有人可以告诉我在GWT中启用Guava支持需要做些什么。

我已经下载了Guava R07,其中有以下两个文件:

  • 番石榴r07.jar
  • 番石榴-R07-gwt.jar

我对此有几个问题:

  1. 这些文件在哪里?我猜我的IDE可以使用标准的Jar进行编码,并且GWT编译器都可以使用它来构建JavaScript吗?
  2. 我是否需要将-gwt.jar中的所有.gwt.xml文件添加到项目的主gwt.xml文件中,或仅添加我需要的部分?
  3. 在Guava& GWT项目的主干上有其他Jars(即不在下载中,例如jsr305的一个),我认为我可能需要它,但我不确定。
  4. 对不起,通常我没有遇到过这种事情的麻烦,但是我无法解决那些问题。

    仅供参考我暂时使用GWT 1.6,但我希望尽快转向2。如果Guava与1.6不兼容则不是问题。

    更新

    我在名为gwtlib的文件夹中有以下文件:

    • 番石榴-R07-gwt.jar
    • 番石榴r07.jar
    • jsr305-1.3.9.jar

    我的Ant脚本执行以下操作:

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

    运行上面的命令,我收到以下错误:

    • 'jar:file:///project/gwtlibs/guava-r07-gwt.jar!/com/google/common/collect/Constraints.java'中的错误
    • 第254行:方法subList(int,int)未定义类型List

    如果没有类路径上的jsr jar,我会收到以下错误:

    • 无法解析导入javax.annotation
    • Nullable无法解析为类型

    由于

2 个答案:

答案 0 :(得分:13)

  1. 将这些jar添加到类路径中。如果您正在使用IDE,请通过右键单击Package Exporer中的“Referenced Libraries”将它们添加到Build Path中,选择“Configure Build Path”并将它们添加为外部JAR。
  2. 您只需要在.gwt.xml文件中继承您计划使用的模块。例如,如果您只使用common.collect包,只需添加<inherits name="com.google.common.collect.Collect" />
  3. 即可
  4. 您可能不需要jsr305.jar,但如果您这样做,只需添加它与添加其他罐子的方式相同。
  5. Guava应该可以正常使用GWT 1.6,如果没有,那么它可能就是一个bug。

答案 1 :(得分:3)

Guava与GWT 1.6不兼容。特别是List.subList被添加到GWT 2中的GWT。我们完全支持的最早版本是GWT 2.0.4