使用Guava和GWT

Ric*_*ich 10 gwt guava

有人能告诉我在GWT中启用番石榴支持需要做些什么.

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

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

我有几个问题:

  1. 这些文件在哪里?我猜我的IDE可以使用标准Jar进行编码,并且两者都可供GWT编译器用于构建JavaScript吗?
  2. 我是否需要将-gwt.jar中的所有.gwt.xml文件添加到项目的主gwt.xml文件中,或仅添加我需要的部分?
  3. 在Guava和GWT项目的主干上有其他Jars(即不在下载中,例如jsr305的一个),我认为我可能需要它,但我不确定.

对不起,通常我没有这种事情的麻烦,但我不能完全解决在哪里.

仅供参考我暂时使用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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

谢谢

丰富

Jas*_*all 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. 您可能不需要jsr305.jar,但如果您这样做,只需添加它与添加其他jar的方式相同.

Guava应该可以正常使用GWT 1.6,如果没有,那么它可能是一个bug.


小智 3

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

  • 这个答案实际上并没有解释如何让 Guava 在 GWT 下工作。请相应更新。 (3认同)