java - 如何避免由于 Kotlin 构建错误 : Supertypes of the following classes cannot be resolved 而重新启动 Android Studio

标签 java android gradle kotlin interface

我有一个用 Java 编写的 Android 应用程序,现在正在第一次尝试 Kotlin。我使用 Kotlin 创建了一个新 Activity ,应该通过“startActivityforResult”从 Java 代码中调用它。 IDE(可能是 Kotlin 插件?)自动将所有必要的内容添加到 gradle 构建文件中。新 Activity 使用来自主 Activity 的键来识别和枚举参数和返回值。不,当我尝试使用 Android Gradle 插件 v3.3.1 和 Kotlin 1.3.20 在 Android Studio 3.3.1 中构建此应用程序时。

通常这会导致错误:无法解析以下类的父类(super class)型。请确保您在类路径中具有所需的依赖项...

列出的类是我自己的 2 个类(所以依赖关系没有问题),两种情况下的父类(super class)型是相同的,即 Java 接口(interface)

interface AllDataLoadedListener {
    void allDataLoaded();
}

与其他接口(interface)定义一起位于名为 DatabaseInterfaces.java 的文件中。

使缓存失效并按照建议重新启动 Android Studio here有帮助(并非总是但大多数情况下),但是在每次代码更改之后这一步显然是必要的,这会很快变得烦人。

根本问题是什么?如何避免和/或解决这个问题?

最佳答案

事实证明,虽然 Java 编译器仍然允许在一个文件中声明多个接口(interface)是不受欢迎的,但 Kotlin 编译器目前不允许。
将接口(interface)文件拆分成文件,每个文件都有一个(1 行)接口(interface),它们各自的类型名称也作为文件名来解决问题。

关于java - 如何避免由于 Kotlin 构建错误 : Supertypes of the following classes cannot be resolved 而重新启动 Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54745395/

相关文章:

java - 如何将 tomcat 服务器的工作目录更改为我的应用程序的 WEB-INF?

java - Gradle 构建 - 无法导入 org.json

android - MyLinearLayout.getDrawingCache() 给出 NullPointerException

运行时 com.crashlytics.android.beta.Beta 的 Android/Crashlytics NoClassDefFoundError

android - 在 Android 上使用自己的推特身份验证

android - 为旧版 Android 开发

gradle - 从命令行覆盖 build.gradle 中的属性

java - 如何实例化具有带参数的私有(private)构造函数的泛型类

java - 无数据库约束的唯一性检查

java - getBundle 找不到属性文件