Включение обработки аннотаций в Eclipse приводит к ошибкам

1

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

Изображение 174551

Изображение 174551

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

Изображение 174551

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

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

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

Изображение 174551

Редактировать: я попытался использовать jagger-компилятор dagger2 с зависимостями отсюда:

Когда я собираю 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:

Изображение 174551

Edit Gradle: Я также попытался активировать обработку аннотаций с помощью градиента в eclipse. Вот мой файл gradly 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'
}

После "град-сборки" я получаю:

/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 нашел его с использованием зависимостей обновления?

Теги:
gradle
gwt

1 ответ

1
Лучший ответ

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

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

  • 0
    Я добавил много зависимостей из компилятора dagger2 pom.xml, но у меня все та же ошибка.
  • 0
    Лучше использовать Maven, чтобы запустить его?
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню