Компиляция проекта GWT с использованием GUICE с ANT

Я могу успешно скомпилировать исходный код, но когда я попадаю в эту муравьиную задачу:

  <target name="gwtc" depends="javac" description="GWT compile to JavaScript">
    <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
      <classpath>
        <pathelement location="src"/>
        <path refid="project.class.path"/>
      </classpath>
      <jvmarg value="-Xmx256M"/>
      <arg line="${gwt.args}"/>
      <arg value="com.jwavro.jaguar.jaguar"/>
    </java>
  </target>

Я получаю эти ошибки:

gwtc:
   [java] Compiling module com.jwavro.jaguar.jaguar
   [java]    Scanning for additional dependencies: generated://9161C2B729E3521B2A51CBE6F2AE8A77/com/unnison/framework/client/GeneratedGinInjector.java
   [java]       Computing all possible rebind results for 'com.unnison.framework.client.GeneratedGinInjector'
   [java]          Rebinding com.unnison.framework.client.GeneratedGinInjector
   [java]             Invoking generator com.google.gwt.inject.rebind.GinjectorGenerator
   [java]                [ERROR] Generator 'com.google.gwt.inject.rebind.GinjectorGenerator' threw an exception while rebinding 'com.unnison.framework.client.GeneratedGinInjector'
   [java] com.google.inject.CreationException: Guice creation errors:
   [java]
   [java] 1) No implementation for javax.inject.Provider was bound.
   [java]   while locating javax.inject.Provider
   [java]     for parameter 9 at com.google.gwt.inject.rebind.BindingsProcessor.(BindingsProcessor.java:209)
   [java]   at com.google.gwt.inject.rebind.GinjectorGeneratorModule.configure(GinjectorGeneratorModule.java:59)

Привязка GUICE должна быть автоматической, есть идеи, как это исправить?


person charlie    schedule 23.11.2010    source источник


Ответы (3)


Guice нельзя использовать напрямую с GWT. Вам необходимо использовать GIN.

person Peter Knego    schedule 16.03.2011
comment
Вопрос был помечен Джином, поэтому я надеюсь, что он уже знал об этом :-) - person Snekse; 16.03.2011
comment
Хотя теперь, когда я смотрю на вопрос, я вижу, что он был отредактирован, поэтому, возможно, исходная публикация не была помечена Джином. - person Snekse; 16.03.2011

javax.inject – это зависимость, которая должна быть указана в пути к классам.

Если вы загрузили Guice из Google, в папке должна быть папка lib распакованный zip с файлом javax.inject.jar, или вы можете скачать прямо из багажника.

Ключ в этой строке:

[java] 1) No implementation for javax.inject.Provider was bound.
person Snekse    schedule 16.03.2011

Есть две вещи, о которых я могу думать. Прежде всего убедитесь, что вы правильно унаследовали модуль GIN в XML-файле модуля GWT:

<module>
  ...
  <inherits name="com.google.gwt.inject.Inject"/>
  ...
</module>

Во-вторых, вы должны быть осторожны с версиями GIN и Guice. На домашней странице GIN написано:

GIN 1.0 требует... и Guice 2.0

Для Gin 1.5 вам потребуется использовать моментальный снимок Guice, поставляемый с Gin, или... Guice 3.0

Поэтому убедитесь, что у вас есть соответствующий Guice JAR в пути.

person Adrian B.    schedule 20.02.2012