Java.lang.IllegalStateException: SimpleTypeImpl не должен создаваться для типа ошибки

Столкнулись с этой ошибкой после перехода на AndroidX.

java.lang.IllegalStateException: SimpleTypeImpl should not be created for error type: ErrorScope{Error scope for class <ERROR CLASS> with arguments: org.jetbrains.kotlin.types.IndexedParametersSubstitution@14ac19e7}

Этот ссылка на сайт мало помогает

Убедитесь, что вы обновили все: IDE, Gradle, версию Kotlin, плагин Kotlin IDE и т. д. Я думаю, что у меня это было однажды, и это было связано с IDE / плагином.

shkschneider 14.01.2019 16:24

Я тоже это вижу! Удалось ли вам решить эту проблему?

Utkarsh Barsaiyan 15.01.2019 21:23

@UtkarshBarsaiyan Мне пришлось внести изменения вручную даже после выбора «Мигрировать на AndroidX» из Android Studio, и я понял, что пока все не обновится (версии, IDE, gradle, код и т. д.), Эта ошибка не исчезнет.

Shahzeb 16.01.2019 03:21

Я обнаружил, что следующая после строки java.lang.IllegalStateException строка дает имя проблемного класса. В моем случае у меня не было зависимости gradle (для rxjava) в модуле библиотеки-нарушителя.

AgileNinja 15.02.2019 21:57

У тебя есть решение?

Malwinder Singh 25.02.2019 08:23

В дополнение к предложению @ AgileNinja моя ошибка заключалась в выводе [ERROR: Response<T>]. Это произошло потому, что я удалил зависимость от модификации одного из моих модулей. Хорошие 2 часа потрачены впустую ...

StuStirling 11.06.2019 15:22
39
6
10 791
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Обновите свою зависимость Kotlin до 1.3.20, и компилятор выделит источник ваших проблем.

Я обновился до Kotlin 1.3.20, но он все еще не работал. Тогда я решил проверить исходный код Kotlin. Нашел вот этот ссылка на сайт

У меня был интерфейс под названием DisplayItem<T>, и я удалил его параметр типа. После этого я начал получать ошибку. Собственно, в конце ошибки в logcat написано DisplayItem

Итак, я проверил все типы DisplayItem в коде и обнаружил, что забыл удалить один параметр типа в переменной LiveData, например:

MediatorLiveData<DataHolder<List<DisplayItem<MessageViewEntity>>>>

После удаления параметра типа из переменной он начал компилироваться. Надеюсь, это тебе поможет.

Примечание: Вы можете использовать git grep для быстрого поиска.

У меня много классов, в которых я использую <T>, и я не могу удалить их по мере необходимости. Есть ли другое решение?

Malwinder Singh 25.02.2019 08:22
git grep на чем?
IgorGanapolsky 21.10.2019 20:47

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

savepopulation 22.10.2019 09:12

@IgorGanapolsky В моем случае проблемным сломанным классом был Event<Boolean, поэтому я поискал grep -rin 'Event<Boolean>' * и нашел ViewModel с неправильным импортом. Удачи, друг мой.

Ivan Morgillo 10.07.2020 10:31

Это может быть поздно. Но при поиске LiveData в моем случае я обнаружил, что некоторые шаблоны относятся к несуществующим типам.

user210504 11.08.2020 23:51

Вариант перехода на AndroidX в Android Studio не очень помог. Я решил эту ошибку, внеся изменения в каждый файл вручную, изменив имена пакетов в соответствии с AndroidX как в коде, так и в xml. Если какой-либо файл оставить без изменений, вы увидите эту ошибку. Убедитесь, что у вас установлена ​​актуальная версия плагина Kotlin, версия плагина Gradle, инструменты сборки и версия Android Studio.

Ответ принят как подходящий

Для меня ошибка возникла из-за недопустимого оператора import. Android Studio ничего не показала по этому поводу. Мне пришлось перейти к каждому файлу, затем студия показала неверную ошибку импорта. Исправлено, и ошибка сборки исчезла.

Фактически это отображалось в предварительном просмотре каждого файла при поиске слова «импорт», что дало мне больше подсказок о том, что пошло не так.

Rickard Elimää 26.08.2019 14:54

Это действительно отсутствие импорта вызвано моей стороной. Используйте меню Анализировать> Проверить код, если вы не хотите проверять каждый файл на отсутствие импорта.

glagarto 18.12.2019 21:01

Для меня это была аналогичная проблема. Кроме того, импорт был в тестовом файле, который, как я наблюдал в прошлом, не проходит проверку компилятора со стороны IDE, пока они не будут запущены или открыты ...

pablisco 01.08.2020 18:51

Аналогичная проблема. Спасибо за ваш опыт.

Georgiy Chebotarev 03.08.2020 16:18

@pablisco, ты спас мне день. Мой отсутствующий оператор импорта действительно находился в тестовом файле

Cris 05.08.2020 13:57

Мой главный совет по решению этой проблемы: когда вы просто получаете сообщение об ошибке, не зная, где настоящая ошибка, попробуйте опцию Android Studio Analyze / Inspect code. Просматривая вывод из этого, я обнаружил фактические ошибки компиляции, которые вызывали проблему, и затем смог легко их исправить.

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

Я сделал следующие шаги, чтобы решить проблему.

1. Обновлена ​​студия Android с 4.1.1 до 4.2.1.

2-Обновите строку ниже в файле gradle-warepper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip

3- Обновите некоторые расширения kotlin, как показано ниже

buildscript {
    ext.kotlin_version = '1.3.72'

к

buildscript {
    ext.kotlin_version = '1.4.32'

 dependencies {
        classpath 'com.android.tools.build:gradle:4.0.1'

к

dependencies {
        classpath 'com.android.tools.build:gradle:4.2.1'

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

Другие вопросы по теме