Проблема: java.lang.IllegalStateException: хранилище для [...] уже зарегистрировано при добавлении преобразователей типоAndroid

Форум для тех, кто программирует под Android
Anonymous
Проблема: java.lang.IllegalStateException: хранилище для [...] уже зарегистрировано при добавлении преобразователей типо

Сообщение Anonymous »

Обзор.

При работе с Room и KSP (обработка символов Kotlin) для преобразователей типов в проекте Android я столкнулся с повторяющейся проблемой после добавления нового преобразователя типов. Сообщение об ошибке было:

Код: Выделить всё

java.lang.IllegalStateException: Storage for [C:\...\symbolLookups\id-to-file.tab] is already registered

Контекст:

Эта проблема возникла после введения нового преобразователя типов для обработки списка строк () с комнатой. Приложение использует обработку символов Kotlin (KSP) для обработки аннотаций для преобразователей комнат и типов.

Проблема:

Каждый раз, когда я добавлял новый тип конвертер, механизм кэширования KSP вызвал конфликт. Ошибка помешала компиляции проекта. Основная причина, по-видимому, связана с тем, как KSP обрабатывает хранение файлов поиска символов, которые могут не очищаться автоматически при значительных изменениях (например, добавлении преобразователей новых типов).

Решение:< /h4>
Вот как я это решил:
[list]
[*]Очистите проект с помощью команды Сборка -> Очистить. Параметр «Проект» в Android Studio.
[*]Сделайте недействительными кеши и перезапустите среду IDE, выбрав «Файл» -> «Недействительные кеши/перезапуск».< /li>
Перезагрузите компьютер. Удивительно, но этот шаг был необходим после того, как описанные выше действия сами по себе не сработали. После перезагрузки компьютера проект успешно скомпилировался.
[/list]
Почему это происходит?

Похоже, это связано о том, как KSP управляет своими кэшами. При добавлении новых элементов, таких как преобразователи типов, KSP не может автоматически аннулировать некоторые файлы поиска кэшированных символов. Это приводит к конфликту при попытке зарегистрировать новое хранилище для этих символов. Очистка с последующей аннулацией кеша и перезагрузкой системы заставляет систему полностью обновить эти кеши.
Кто-нибудь еще сталкивался с этой проблемой при добавлении преобразователя нового типа в комнату с KSP? Существуют ли какие-либо известные постоянные исправления или профилактические меры, помимо аннулирования кэша и перезагрузки компьютера?
Я был бы признателен за любые идеи или потенциальные решения, особенно если есть более надежный способ предотвратить эту ошибку. Не стесняйтесь поделиться своим опытом решения подобных проблем с кэшем KSP!

Подробнее здесь: https://stackoverflow.com/questions/789 ... registered

Вернуться в «Android»