В PlayN, как я могу получить HTML-версию моего проекта, используя библиотеки Google Guava для компиляции?

Я могу нормально запустить Java-версию моего проекта, просто импортировав библиотеки Guava следующим образом:

import com.google.gwt.thirdparty.guava.common.collect.ImmutableList;

Следуя совету здесь, я добавил эту строку в html/pom.xml. :

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava-gwt</artifactId>
  <version>10.0.1</version>
</dependency>

И эта строка в файле html/project.gwt.xml:

<inherits name="com.google.common.collect.Collect"/>

Но когда я пытаюсь GWT-компилировать свою HTML-версию в Eclipse, я получаю следующие ошибки:

[ERROR] Line 61: No source code is available for type com.google.gwt.thirdparty.guava.common.collect.ImmutableList<E>; did you forget to inherit a required module?

person klenwell    schedule 03.04.2012    source источник
comment
Я видел это сообщение об изменении пути к классам на com.google.common.base. Дал это попробовать, но, казалось, только сделал хуже.   -  person klenwell    schedule 03.04.2012
comment
Я думаю, что это должно быть com.google.common.collect в вашем случае.   -  person Etienne Neveu    schedule 03.04.2012


Ответы (2)


Я думаю, вы можете импортировать неправильный класс. Попробуйте заменить импорт com.google.gwt.thirdparty.guava.common.collect.ImmutableList на com.google.common.collect.ImmutableList.

Вот аналогичный вопрос о классе Lists: Проблемы с GWT и Guava

person Etienne Neveu    schedule 03.04.2012
comment
Итак, мне нужно будет изменить все мои операторы импорта с import com.google.gwt.thirdparty.guava.common.collect.Foo; на com.google.common.collect.Foo;? - person klenwell; 03.04.2012
comment
Я согласен, что это то, что вы должны сделать. - person Louis Wasserman; 03.04.2012
comment
Да, вы вообще не должны были иметь возможность импортировать эту штуку gwt.firstparty. Это внутренняя копия старых версий нашего кода GWT. - person Kevin Bourrillion; 03.04.2012
comment
Часть проблемы, с которой я сталкиваюсь, заключается в том, что com.google.gwt. ThirdParty.guava.common.collect — это путь, который по какой-то причине предпочитает Eclipse. - person klenwell; 04.04.2012
comment
Сейчас я использую IDEA, но, кажется, я помню, что Eclipse позволяет вам настраивать ваши любимые импорты и указывать, какие импорты должны предлагаться по умолчанию для автозаполнения? - person Etienne Neveu; 04.04.2012
comment
Ява | Внешний вид | Введите фильтры com.google.gwt.firstparty.* - person Chris Povirk; 04.04.2012

Я выбрал ответ @eneveu, поскольку он направил меня в правильном направлении. Вот более подробные инструкции по включению Guava в HTML-версии вашего проекта PlayN.

<сильный>1. Добавьте зависимость к YourGame-core/pom.xml

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava-gwt</artifactId>
  <version>11.0.2</version>
</dependency>

<сильный>2. Щелкните правой кнопкой мыши каталог YourGame-core в окне проводника пакетов, затем: Maven > Обновить зависимости

<сильный>3. Для HTML5 добавьте эту строку в YourGame-html/YourGame.gwt.xml:

 <inherits name="com.google.common.collect.Collect"/> 

<сильный>4. При импорте используйте правильный путь к библиотеке:

import com.google.common.collect.Foo;
/* NOT: import com.google.gwt.thirdparty.guava.common.collect.Foo; */

Я скомпилировал код по ссылке ниже и протестировал его в Chrome, чтобы убедиться, что Guava успешно импортируется:

person klenwell    schedule 04.04.2012