2015-02-03 2 views
1

У меня есть Eclipse Luna и стандартный проект веб-приложений GWT. Я попытался включить обработку аннотаций, чтобы сделать работу Dagger2. Вот мой проект конкретные конфигурации:Eclipse Включение обработки аннотации приводит к ошибкам

enter image description here

enter image description here

После того, как я попал применить Eclipse, показывает мне следующее сообщение об ошибке:

enter image description here

Как решить эту ошибку?

Edit: я создал демонстрационный проект для демонстрации проблемы: https://github.com/confile/GWT-Dagger2-Demo

Я смотрел на pom.xml из dagger2 компилятора и добавил дополнительную зависимость, но до сих пор нет прогресса. Вот что я сделал:

enter image description here

Изменить: Я пытался использовать dagger2 компилятор банку с зависимостями от here:

Когда я GWT компиляции я получаю следующие ошибки:

Compiling module test.GWTT 
    Tracing compile failure path for type 'test.client.test2.Dagger_MyWidgetGinjector' 
     [ERROR] Errors in 'file:/Users/mg/Documents/Eclipse/Eclipse-4.4/GWTT/.apt_generated/test/client/test2/Dagger_MyWidgetGinjector.java' 
     [ERROR] Line 9: No source code is available for type javax.inject.Provider<T>; did you forget to inherit a required module? 
    Tracing compile failure path for type 'test.client.test2.MyWidgetClientModule$$ProvideSomeServiceFactory' 
     [ERROR] Errors in 'file:/Users/mg/Documents/Eclipse/Eclipse-4.4/GWTT/.apt_generated/test/client/test2/MyWidgetClientModule$$ProvideSomeServiceFactory.java' 
     [ERROR] Line 7: No source code is available for type dagger.Factory<T>; did you forget to inherit a required module? 
    [ERROR] Aborting compile due to errors in some input files 

У меня есть следующие библиотеки на моей пути построения Java:

enter image description here

Edit Gradle: Я также попытался активировать обработку аннотации с помощью градиента в eclipse. Вот мой Gradle build.gradle файл:

apply plugin: 'apt' 
apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'war' 
apply plugin: 'gwt' 
apply plugin: 'jetty' 

sourceCompatibility = 1.7 
version = '1.0' 

eclipse { 
    classpath { 
     downloadSources=true 
     downloadJavadoc=true 
    } 
} 

buildscript { 
    repositories { 
     mavenCentral() 
     jcenter() 
     maven { 
      url "https://oss.sonatype.org/content/repositories/snapshots/" 
     } 
    } 
    dependencies { 
     classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'  
     classpath 'com.jimdo.gradle:gradle-apt-plugin:0.5-SNAPSHOT' 
    } 
} 


repositories { 
    mavenCentral() 
    maven { 
     name = "sonatype" 
     url = "https://oss.sonatype.org/content/repositories/snapshots/" 
    } 
} 

dependencies { 
    apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT:jar-with-dependencies' 

    compile 'com.google.guava:guava:18.0' 
    compile 'com.google.guava:guava-gwt:18.0' 
    compile 'javax.inject:javax.inject:1' 
    compile 'com.google.dagger:dagger:2.0-SNAPSHOT' 
} 

gwt { 
    gwtVersion='2.7.0' 
    logLevel = 'INFO' 
    minHeapSize = "512M"; 
    maxHeapSize = "1024M"; 


    compiler { 
     strict = true; 
    } 

    modules 'test.GWTT'  
} 

tasks.withType(de.richsource.gradle.plugins.gwt.AbstractGwtActionTask) { 
    args '-XjsInteropMode', 'JS' 
} 

После `Gradle build``I получить:

/Users/mg/Documents/Grails/GGTS3.6.2/TestGradle2/src/main/java/test/client/GWTT.java:16: error: cannot find symbol 
     MyWidgetGinjector injector = Dagger_MyWidgetGinjector.create(); 
            ^
    symbol: variable Dagger_MyWidgetGinjector 

Я могу видеть, что Dagger_MyWidgetGinjector.java был создан в build/source/apt/test/client/test2/. Мне все еще нужно выяснить, как я могу добавить вновь созданный источник, чтобы eclipse нашел его с использованием зависимостей обновления?

ответ

1

Dagger 2 не затеняет свои зависимости (пока), поэтому вам нужно добавить все зависимости от кинжала-компилятора к заводскому пути.

EDIT: есть jar-with-dependencies аромат, содержащий все зависимости, чтобы сделать его более удобным для пользователей, как вы, которые не используют так называемые управляемые зависимости, за счет, возможно, имеющих конфликты при использовании других процессоров аннотаций с такие же транзитивные зависимости. Идеально кинжал-компилятор должен оттенок его зависимости для создания беспорядочной uber-jar; в конце концов, я верю.

+0

Я добавил много зависимостей от компилятора dagger2 pom.xml, но все же у меня такая же ошибка. – confile

+0

Лучше ли использовать maven для запуска? – confile

+2

На самом деле, есть компилятор с кинжалом-компилятором «jar-with-dependencies», который вы можете использовать (и вам не потребуется никакой другой JAR на заводском пути).Если вы все еще видите ошибку, посмотрите на «представление ошибки» в Eclipse, чтобы (попытаться) получить более подробную информацию об ошибках. –

Смежные вопросы