android - kotlin,协程,NoSuchMethodError 从其他模块调用覆盖的挂起函数时
问题描述
每当我尝试执行在其他模块中定义的覆盖挂起方法时,它都会失败NoSuchMethodError
(请参阅下面的更多详细信息)。
这就是我正在做的事情:
我有两个模块app和lib。
lib这里我有一个OtherModuleInterface
带有挂起方法( )的接口( test
)。
app在这里我已经定义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
以查看错误。
解决方案
推荐阅读
- r - 将火花数据帧中的字符串转换为时间戳
- python - 错误:关系“music_pionizex_id_seq”不存在 SQL 状态:42P01
- reactjs - 在未找到路径的反应中处理 http 错误
- sql - 简单的选择查询永远运行
- ios - Swift ISO8601 格式到日期返回致命错误
- php - 使用 php * 语法从 JSON 字符串中获取数据
- javascript - 如果任何父样式更改,则手动修改的 DOM 节点样式将失效
- 3d - 检查点的正确方法是在 3d 圆锥内
- python - 如何修复:TypeError:+ 不支持的操作数类型:“NoneType”和“str”
- html - 更改 HTML 的宽度