java.lang.IllegalStateException:不应为错误类型创建SimpleTypeImpl

时间:2019-01-14 11:26:33

标签: android kotlin androidx android-studio-3.2

迁移到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}

link并没有太大帮助

6 个答案:

答案 0 :(得分:3)

我更新为Kotlin 1.3.20,但仍然无法正常工作。然后,我决定检查Kotlin源代码。我发现了这个link

我有一个名为DisplayItem<T>的接口,并且删除了它的type参数。在这之后,我开始得到错误。实际上,在logcat错误的末尾,它显示为DisplayItem

所以我检查了代码中的所有DisplayItem类型,发现我发现要删除LivaData变量中的一个类型参数,例如以下内容:

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

从变量中删除类型参数后,它开始编译。希望对您有帮助。

注意:您可以使用git grep进行快速搜索。

答案 1 :(得分:2)

我要解决此问题的主要技巧是,当您仅收到错误消息而又不知道真正错误在哪里时,请尝试使用Android studio Analyze / Inspect代码选项。仔细研究一下输出结果,我发现了引发问题的实际编译错误,然后可以轻松地解决它们。

在我的情况下,实际的问题是将具有嵌套类的泛型类更改为抽象类,并创建两个子类来替换以前的用法。我仍然将我的代码引用到原始抽象基类上,在那里我应该用两个新的子类之一替换它们。

答案 2 :(得分:2)

我按照以下步骤解决了这个问题。

1-将 android studio 从 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 同步等需要一些时间,但最终对我来说解决了一整天后的问题。

答案 3 :(得分:1)

迁移到Android Studio中的AndroidX选项并没有太大帮助。我通过手动更改每个文件来解决此错误,并根据代码和xml中的AndroidX更改了包名称。如果任何文件保持不变,您将看到此错误。请确保您的Kotlin插件版本,gradle插件版本,构建工具和Android Studio版本是最新的。

答案 4 :(得分:1)

对我来说,由于无效的import语句而出现了错误。 Android Studio没有显示任何相同的内容。我必须转到每个文件,然后Studio显示了无效的导入错误。修复了它,构建错误消失了。

答案 5 :(得分:0)

将Kotlin依赖项升级到1.3.20,编译器将突出显示问题的根源。