java.lang.NoSuchMethodError: Lkotlin/time/TimeMark 类中没有虚方法 elapsedNow()D

Ayd*_*kan 46 android kotlin koin

我最近更新了Kotlinto的版本1.4.0-rc

从那时起Koin返回以下运行时错误:

java.lang.NoSuchMethodError: No virtual method elapsedNow()D in class Lkotlin/time/TimeMark

Ayd*_*kan 44

显然这个问题是由于androidLogger()与 Koin 一起使用造成的。目前只有一种解决方法,即从 迁移androidLogger()androidLogger(Level.ERROR)

已经为此目的创建了一个问题:

https://github.com/InsertKoinIO/koin/issues/847

  • 正如 Martin Bove 在另一个答案(/sf/answers/4461394731/)中提到的,该问题已在 Koin 版本“2.2.0-alpha-1”中得到修复。 (5认同)
  • 我在 Koin 2.2.2 中遇到了这个问题,但它在 2.2.3 中得到了修复(处于最终状态,不是 alpha 也不是 beta)。请注意,Koin 将其供应商名称从“org.koin”更改为“io.insert-koin”。 (3认同)

小智 37

使用最新的alpha 版本,我的问题解决了。

// latest unstable
koin_version = '2.2.0-alpha-1'
implementation "org.koin:koin-androidx-scope:$koin_version"
implementation "org.koin:koin-androidx-viewmodel:$koin_version"
implementation "org.koin:koin-androidx-fragment:$koin_version"
Run Code Online (Sandbox Code Playgroud)

进入主文档了解更多详情:Koin 最新版本

避免该问题的另一种方法是@Aydinozkan 如何通过将记录器级别设置为错误或无来表示。

startKoin {
        androidLogger(Level.NONE)          
    }
Run Code Online (Sandbox Code Playgroud)