求助:解决继承含@JvmDefault成员接口需-Xjvm-default选项错误
解决“继承含有‘@JvmDefault’成员的接口仅在使用-Xjvm-default选项时才被允许”错误
这个错误是因为你的代码继承了带有@JvmDefault默认方法的Kotlin接口,编译器需要明确参数来处理这类方法,按以下步骤配置即可解决:
1. 配置Module级Gradle文件
根据你使用的Gradle语法,添加对应的编译参数:
Groovy语法(build.gradle)
android { // 保留原有其他配置 kotlinOptions { freeCompilerArgs += ["-Xjvm-default=all"] } }
Kotlin DSL语法(build.gradle.kts)
android { // 保留原有其他配置 kotlinOptions { freeCompilerArgs += "-Xjvm-default=all" } }
2. 可选参数说明
-Xjvm-default有几个可选值,可根据项目情况选择:
all:为所有接口的默认方法生成JVM默认实现,适配大部分Jetpack库场景(对应你截图里的Room DAO、ViewModel相关接口)all-compatibility:生成兼容旧版字节码的实现,适合需要兼容低版本Kotlin的项目enable:仅为标注了@JvmDefault的方法生成默认实现,较少使用
额外提示
- 确保项目使用的Kotlin版本在1.4.0以上,该版本后
@JvmDefault的支持更稳定 - 你截图中的DAO类(Room)、ViewModel相关类大概率依赖了带
@JvmDefault的Jetpack接口,添加上述配置即可解决编译报错
内容的提问来源于stack exchange,提问作者hds
相关产品推荐
相关产品推荐

