Использование Guava с GWT

Может ли кто-нибудь сказать мне, что мне нужно сделать, чтобы включить поддержку Guava в GWT.

Я загрузил Guava R07 и там есть следующие два файла:

  • гуавы-r07.jar
  • гуавы-r07-gwt.jar

У меня есть несколько вопросов относительно этого:

  • Куда идут эти файлы? Я предполагаю, что стандартный Jar доступен для моей IDE для кодирования и что оба они доступны для компилятора GWT для создания JavaScript?
  • Нужно ли добавлять все файлы .gwt.xml из -gwt.jar в основной файл gwt.xml проекта или только те части, которые мне нужны?
  • Есть другие Jars на сундуке проекта Guava & GWT (т.е. не в загрузке, например, для jsr305), который, я думаю, мне может понадобиться, но я не уверен.

Извините, обычно у меня нет проблем с подобными вещами, но я не могу понять, что происходит.

FYI Я использую GWT 1.6 на данный момент, но я надеюсь скоро переехать в 2. Если Guava не совместим с 1.6, это не проблема.

Update

У меня есть следующие файлы в папке gwtlib:

  • гуавы-r07-gwt.jar
  • гуавы-r07.jar
  • jsr305-1.3.9.jar

И мой Ant script выполняет следующие действия:

<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: файл:///project/gwtlibs/guava-r07-gwt.jar!/com/google/common/collect/Constraints.java'
  • Строка 254: метод subList (int, int) - undefined для типа List

Без jsr jar в пути к классам я получаю следующие ошибки:

  • Импорт javax.nnation невозможен.
  • Nullable не может быть разрешен для типа

Спасибо

Рич

Ответ 1

Guava не совместим с GWT 1.6. List.subList, в частности, добавляется в GWT в GWT 2. Самая ранняя версия, которую мы полностью поддерживаем, - GWT 2.0.4

Ответ 2

  • Добавьте эти банки в свой путь к классам. Если вы используете IDE, добавьте их в свой путь сборки, щелкнув правой кнопкой мыши "Связанные библиотеки" в вашем пакете Exporer, выберите "Настроить путь сборки" и добавьте их в качестве внешних JAR.
  • Вам нужно только наследовать модули, которые вы планируете использовать в файле .gwt.xml. Например, если вы используете только пакет common.collect, просто добавьте <inherits name="com.google.common.collect.Collect" />
  • Вам, вероятно, не нужен jsr305.jar, но если вы это сделаете, просто добавьте его так же, как вы добавили другие банки.

Гува должен отлично работать с GWT 1.6, если это не так, то это, вероятно, ошибка.