2010-10-26 38 views
10

有人能告诉我我需要做什么才能在GWT中启用Guava支持。与GWT一起使用番石榴

我已经下载番石榴R07,并在那里有以下两个文件:

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

我有几个关于此的问题:

  1. 这些文件在哪里去?我在猜测标准Jar是否可用于我的IDE进行编码,并且这两者都可供GWT编译器用于构建JavaScript?
  2. 我是否需要将-gwt.jar中的所有.gwt.xml文件添加到我的项目的主要gwt.xml文件中,或仅添加我需要的部分?
  3. 在我看来我可能需要的Guava & GWT项目(即不在下载中,例如jsr305的下载中)上还有其他罐子,但我不确定。

对不起,通常我没有这种事情的麻烦,但我不能完全弄清楚什么去了哪里。

仅供参考暂时我正在使用GWT 1.6,但希望尽快移到2。如果番石榴不兼容1.6这不是一个问题。

更新

我有一个文件夹,名为gwtlib下列文件:

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

而我的蚂蚁脚本会执行以下操作:

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

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

  • 错误在“罐子:文件:///project/gwtlibs/guava-r07-gwt.jar/COM /谷歌/共同/collect/Constraints.java”
  • 线254:该方法子列表(INT,INT)是未定义的类型列表

没有在类路径中JSR罐子,我得到以下错误:

  • 导入javax。注释不能得到解决
  • 可空不能被解析为一个类型

感谢

丰富

+0

下面是一个类似的问题与答案:http://stackoverflow.com/questions/2005687/guava -libraries-and-gwt/6201161#6201161 – Hbf 2011-06-01 12:33:51

+0

实际使用时没有问题。 http://pgt.de/2012/07/11/using-guava-with-gwt/ – 2012-07-11 06:37:41

+0

谢谢帕皮克 - 我在两年前问过我的问题 - 从那时起,GWT和番石榴都进化了很多,最近的版本GWT和番石榴绝对是相互兼容的。 – Rich 2012-07-11 07:00:50

回答

3

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

+3

这个答案实际上并不能解释如何让GWa下的Guava工作。请相应更新。 – Gili 2011-02-23 05:02:10

+1

使用GWT 2.0.4及以上版本的Guava是非常容易的,您可以像在任何其他库中一样将其包含在类路径中(同时考虑到任何GWT特定的Jars),并且GWT编译器会发挥它的魔力。 Hayward对我原来的问题(基本上是“为什么不是Guava在GWT 1.6上工作?”)的回答足以让我发现我浪费了自己的时间来试图让它发挥作用。 – Rich 2011-02-23 10:38:58

13
  1. 这些JAR添加到类路径。如果您使用IDE,请右键单击Package Exporer中的“引用库”,将它们添加到您的构建路径中,选择“配置构建路径”并将它们添加为外部JAR。
  2. 您只需要在您的.gwt.xml文件中继承您计划使用的模块。例如,如果您只使用common.collect包,只需添加<inherits name="com.google.common.collect.Collect" />
  3. 您可能不需要jsr305.jar,但如果您这样做,只需添加它就像添加其他jar一样。

番石榴应该在GWT 1.6下工作得很好,如果不是,那么它可能是一个错误。

+0

我已经编辑了我的问题,提供了进一步的信息......是否对这个主题有所了解? – Rich 2010-10-27 07:27:57

+0

听起来像你需要jsr305.jar然后。至于你的其他问题,我不明白是什么原因造成的...... – 2010-10-27 15:07:31

+1

然而,你需要确保你坚持使用@GwtCompatible注解。 – 2010-10-28 06:14:58