2010-10-26 68 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