ошибка: сгенерированный пакет.схема не существует

В моем приложении для Android у меня есть процессор аннотаций, который генерирует файлы с использованием JavaPoet и помещает их в пакет generate.schema.

Файлы генерируются корректно. Всякий раз, когда я использую сгенерированный файл так

GeneratedFile.someGeneratedMethod();

Я получаю следующую ошибку:

error: package generated.schema does not exist.

Но если я включу полное имя класса вместо импорта, как так

generated.schema.GeneratedFile.someGeneratedMethod();

код компилируется и работает без ошибок.

Я не хочу добавлять полный пакет каждый раз, когда использую GeneratedFile. Я не уверен, что я сделал неправильно, так как я все еще учусь работать с обработчиком аннотаций.

Файлы, сгенерированные другими библиотеками, включая Realm, DataBinding, работают правильно, как и ожидалось.

Создание файла:

используя JavaPoet, я запускаю следующий код.

if (roundEnvironment.processingOver()) {
    for (TypeElement element : apiList) {
        TypeSpec clazz = generateFile(element);

        JavaFile.builder(NamespaceCreator.generateClassPackage(element), clazz)
                .build()
                .writeTo(filer);
    }
}
  • NamespaceCreator.generateClassPackage(element) возвращает имя пакета для class, то есть generated.schema.

person Abbas    schedule 21.06.2019    source источник
comment
как вы записываете файл внутри вашего процессора?   -  person El Hoss    schedule 24.06.2019
comment
@ElHoss Я использую JavaPoet, я добавил соответствующий код.   -  person Abbas    schedule 24.06.2019


Ответы (1)


При создании классов я ждал последнего прохода обработки. генерация кода, инкапсулированная

if (roundEnvironment.processingOver())

Я получил предупреждение из-за этого:

Файл для типа 'generated.schema.GeneratedFile', созданный в последнем раунде, не будет подвергаться обработке аннотации.

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

Несмотря на то, что после удаления последней проверки раунда / прохода из генерации файлов я могу правильно (с импортом) получить доступ к сгенерированным файлам без каких-либо ошибок; Я до сих пор не понимаю, как создание файлов во всех раундах влияет на доступ к файлам во время сборки с помощью import.

Для этого я опубликую новый вопрос.

person Abbas    schedule 01.07.2019