从其他模块调用重写的挂起函数时,出现kotlin,协程,NoSuchMethodError

时间:2018-08-27 10:41:31

标签: android kotlin kotlinx.coroutines

每当我尝试执行其他模块中定义的重写的挂起方法时,都会失败并显示NoSuchMethodError(请参见下面的更多详细信息)。

这正是我正在做的事情:

我有两个模块 app lib

lib 在这里,我有一个带有暂挂方法(OtherModuleInterface)的接口(test)。

应用,这里我已经定义了该界面的实现(OtherModuleImpl)。

如果我这样称呼它:

 val myOtherModuleObject : OtherModuleImpl = OtherModuleImpl()
    runBlocking { myOtherModuleObject.test() }

然后正常工作。

如果我使用OtherModuleInterface作为值类型:

val myOtherModuleObject : OtherModuleInterface = OtherModuleImpl()
runBlocking { myOtherModuleObject.test() }

它失败,但出现以下异常:

  

java.lang.NoSuchMethodError:com.example.lib.OtherModuleInterface.test(Lkotlin / coroutines / experimental / Continuation;)Ljava / lang / Object

如果我将接口和实现都放在同一个模块中,则效果很好:

val mySameModuleObject : SameModuleInterface = SameModuleImpl()
    runBlocking { mySameModuleObject.test() }

您可以在此处签出代码以查看整个项目配置: https://github.com/rjuszczyk/kotlin-coroutines-problem 并运行ExampleUnitTest来查看错误。

0 个答案:

没有答案