Android студия показывает очень конкретные c некорректные ошибки с библиотекой JavaPoet - PullRequest
0 голосов
/ 28 апреля 2020

Я написал процессор аннотаций с использованием библиотеки JavaPoet и включил его в качестве Java модуля библиотеки в свой проект. Он компилируется и работает нормально. Проблема в том, что * Android Встроенный компилятор Studio показывает мне ошибки, которых не должно быть.

  1. Почему-то не распознает многоточие в параметрах first error
  2. То же, что и выше. enter image description here
  3. Это показывает, что не существует метода writeTo, который принимает тип Filer в качестве параметра, хотя он явно используется при выборе Go To> Объявление параметра. И, как я уже говорил, это прекрасно компилируется. enter image description here

Я уже пробовал:

  1. Проект очистки и восстановления - не работал
  2. Синхронизация нескольких градел раз - не работает
  3. Обновление проекта gradle - не работает
  4. Использование файла> Недействительный параметр кэширования / перезапуска - не работает
  5. Удаление папок .gradle и .idea и повторная синхронизация - не работает
  6. Удаление модуля Java Library из проекта и с диска и создания его заново с теми же классами - тоже не сработало

Всегда одни и те же три ошибки, так что я в полном недоумении. Я должен упомянуть, что эта проблема возникла, когда я понизил версию JavaPoet с 1.12.1 до 1.9.0 (совместимость Java 7 оказалась критической для моей версии приложения, поэтому более высокие версии Java 8 вне вопроса). Мой файл Gradle:

apply plugin: 'java-library'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    annotationProcessor 'com.google.auto.service:auto-service:1.0-rc2'
    implementation 'com.google.auto.service:auto-service:1.0-rc2'
    implementation 'android.arch.persistence.room:runtime:1.1.1'
    implementation 'com.squareup:javapoet:1.9.0'
}

sourceCompatibility = 1.7
targetCompatibility = 1.7

Это не договор, но это отвлекает и раздражает. Вы хоть представляете, что может быть причиной такого поведения?

1 Ответ

0 голосов
/ 29 апреля 2020

Хотя я до сих пор не понимаю, в чем может быть причина, ошибки исчезли, как только я включил модуль процессора как проект в мой основной модуль приложения , а не как банку. В основном я изменил эту строку:

annotationProcessor files('../migrationprocessor/build/libs/migrationprocessor.jar')

К этой строке:

annotationProcessor project(':migrationprocessor')
...