【问题标题】:Kotlin file changes result in Redeclaration errorKotlin 文件更改导致重新声明错误
【发布时间】:2019-06-27 16:18:28
【问题描述】:

对 kotlin 文件的每次更改都会在构建时导致重新声明错误。解决它的唯一方法是清理项目然后重建。项目中没有与我正在编辑的文件同名的其他文件。

我试过了:

  • 重命名我一直在研究的课程
  • Android Studio中kotlin、gradle、kotlin插件版本的升级和降级
  • 使用测试版 Android Studio
  • 重新排序我的 gradle 文件中的插件

当前构建正在使用:

org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21
com.android.tools.build:gradle:3.2.0

会导致错误的示例代码。如果我在没有addedThisLine 的情况下构建它,它将作为它的第一个构建。然后当我以任何方式编辑文件时,它会导致下面的错误。

package beagle.com

class ErrorFragment {

    val hello = "Hello"

    init {
        var goodbye = "goodbye"
        var addedThisLine = "When this line is added I get error"
    }
}

我得到的错误

这发生在我项目中的每个 kotlin 文件中,我上面发布的代码是最基本的文件。如您所见,它指向错误类的名称。

【问题讨论】:

  • 你试过File -> Invalidate Caches / Restart吗?
  • 是的,结果与清洁相同。更改后我再次收到错误
  • 看看这个github页面,可能对你有帮助:github.com/spring-projects/sts4/issues/168
  • 谢谢,它似乎与 eclipse 相关。我的问题发生在 Android Studio 上。我查找了链接建议的设置,但 Android Studio 似乎没有等效项
  • 尝试在Android Studio中下载最新的Kotlin插件包(可能是1.3.40之类的)然后重新导入项目并再次检查.它可能会解决问题。

标签: android kotlin


【解决方案1】:

只需清理项目并再次重建您的项目

【讨论】:

  • 解决所有问题
  • ./gradlew clean
【解决方案2】:

TL;DR:检查您的目录是否与settings.gradle 中显示的名称完全相同。

值得一提:MacOS 并不总是区分大小写,这可能会导致奇怪的问题。


我想我找到了解决方案:区分大小写的东西

就我而言,我使用的是模块,我们只需调用模块:moduleAmoduleB

settings.gradle 我有:include ':ModuleA', 'moduleB',但文件系统级别的目录是:moduleA/moduleB/

这看起来很奇怪,不应该工作,但第一次运行总是有效,然后下一次将失败,直到项目被清理。

我决定保持一致并将目录重命名为settings.gradle 列出的目录,即使在 AndroidStudio 中它们以settings.gradle 中列出的名称出现。这也有助于清理事情,因为 git 在.git/config 下有一个配置,该配置声明忽略区分大小写的内容。

因此,请检查您的目录的大小写与它们在settings.gradle 中的列出方式。

在重命名东西并使用 gradle 清理之后,一切都像以前一样工作。

【讨论】:

  • 我在包名中使用驼峰命名
  • 哦,天哪,我有几个月的这个问题,无法弄清楚。这解决了它。先生,您是真正的英雄!干杯!
【解决方案3】:

然后升级kotlingradle版本

尝试Run这可能会有所帮助

./gradlew clean
rm -rf ~/.gradle/caches/*

如果未添加,请尝试将以下内容添加到您的 gradle.build 文件中

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

【讨论】:

    【解决方案4】:

    这对我有用

    1. 构建 > 清理项目
    2. 构建 > 重建项目
    3. 运行

    【讨论】:

      【解决方案5】:

      1.清理并重建

      如果这对类名冲突不起作用!

      只需重命名或更改类的路径,因为您在一个包中有类的相同名称

      【讨论】:

        【解决方案6】:

        如果清理项目并重建不工作。尝试同步项目。这对我有用。

        【讨论】:

          【解决方案7】:

          从 2020 年 7 月起,如果已经存在同名的类,您将收到此重新声明错误,因此您必须重命名或移至其他包。

          【讨论】:

            【解决方案8】:

            当路径中有另一个同名的 Java 文件时,Kotlin 编译器可能会在 MacOS 和 Linux 环境中失败。 正如@sana 所说,重命名文件可以解决问题

            Similar issue on JetBrains issue-tracker

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2022-08-17
              • 1970-01-01
              • 2012-11-09
              • 2010-12-29
              • 2015-08-29
              • 2012-06-18
              相关资源
              最近更新 更多