You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Koin依赖注入时遭遇kotlin.time.TimeMark接口/类不兼容错误

问题

参考教程实现Koin依赖注入时,将原Koin 2.0.1依赖替换为3.0.2版本:

implementation "io.insert-koin:koin-core:3.0.2"
implementation "io.insert-koin:koin-android:3.0.2"

在App类中注册模块:

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        startKoin {
            androidLogger(Level.DEBUG)
            androidContext(this@App)
            modules(listOf(repositoryModule, viewModelModule, retrofitModule, apiModule))
        }
    }
}

运行时触发如下错误,错误指向modules(listOf(...))代码行:

java.lang.IncompatibleClassChangeError: Found interface kotlin.time.TimeMark, but class was expected (declaration of 'kotlin.time.TimeMark' appears in /data/app/pkg-ptdpYgWwV-BVxpo5sVLPxg==/base.apk!classes15.dex)

模块代码如下:

val viewModelModule = module {
    viewModel {
        UserViewModel(get())
    }
}

val repositoryModule = module {
    single {
        UserRepository(get())
    }
}

val apiModule = module {
    fun provideUseApi(retrofit: Retrofit): GithubApi {
        return retrofit.create(GithubApi::class.java)
    }

    single { provideUseApi(get()) }
}

val retrofitModule = module {
    fun provideHttpClient(): OkHttpClient {
        val okHttpClientBuilder = OkHttpClient.Builder()

        return okHttpClientBuilder.build()
    }

    fun provideRetrofit(client: OkHttpClient): Retrofit {
        return Retrofit.Builder()
            .baseUrl("https://api.github.com/")
            .addConverterFactory(GsonConverterFactory.create())
            .client(client)
            .build()
    }

    single { provideHttpClient() }
    single { provideRetrofit(get()) }
}

未直接使用TimeMark,请问该错误的原因是什么?

原因分析与解决

这个错误的核心是Kotlin版本不兼容:

  • Koin 3.0.2依赖的Kotlin版本中,kotlin.time.TimeMark是一个类;
  • 而你当前项目使用的Kotlin版本较低(通常为Kotlin 1.4及以下),在这些旧版本里TimeMark是一个接口。

当Koin库试图以类的方式调用TimeMark,但项目编译时用的是接口版本,就会触发IncompatibleClassChangeError。

解决步骤

  1. 打开项目根目录的build.gradle(或build.gradle.kts)文件,找到Kotlin插件版本配置,将其升级到与Koin 3.0.2兼容的版本(推荐Kotlin 1.5.31及以上,Koin 3.x官方适配的最低Kotlin版本是1.5):
    // 示例:升级Kotlin插件版本
    buildscript {
        ext.kotlin_version = "1.5.31"
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
    
  2. 同步Gradle项目,清理并重建工程(Build -> Clean Project -> Rebuild Project)。

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 14:22:30