【问题标题】:Using Guava with GWT在 GWT 中使用 Guava
【发布时间】:2010-10-26 12:12:56
【问题描述】:

谁能告诉我我需要做什么才能在 GWT 中启用 Guava 支持。

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

  • guava-r07.jar
  • guava-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 的文件夹中有以下文件:

  • guava-r07-gwt.jar
  • guava-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 无法解析为类型

谢谢

丰富

【问题讨论】:

标签: gwt guava


【解决方案1】:
  1. 将这些 jars 添加到您的类路径中。如果您使用的是 IDE,请通过右键单击 Package Exporer 中的“Referenced Libraries”将它们添加到您的构建路径,选择“配置构建路径”并将它们添加为外部 JAR。
  2. 您只需要继承您计划在 .gwt.xml 文件中使用的模块。例如,如果您只使用common.collect 包,只需添加&lt;inherits name="com.google.common.collect.Collect" /&gt;
  3. 您可能不需要 jsr305.jar,但如果需要,只需按照添加其他 jar 的方式添加即可。

Guava 在 GWT 1.6 上应该可以正常工作,如果不能,那么它可能是一个错误。

【讨论】:

  • 我已经用更多信息编辑了我的问题...这对这个主题有什么启示吗?
  • 听起来你需要jsr305.jar。至于你的其他问题,我看不出是什么原因造成的......
  • 不过,您需要确保坚持使用带有 @GwtCompatible 注释的类。
【解决方案2】:

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

【讨论】:

  • 这个答案实际上并没有解释如何让 Guava 在 GWT 下工作。请相应更新。
  • 让 Guava 在 GWT 2.0.4 及更高版本中工作非常容易,您只需将它包含在类路径中,就像您将任何其他库一样(记住任何特定于 GWT 的罐子)并且 GWT 编译器会这样做这是魔法。海沃德对我最初的问题的回答(基本上是“为什么 Guava 不在 GWT 1.6 上工作?”)足以让我看到我在浪费时间试图让它工作。
猜你喜欢
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
相关资源
最近更新 更多