刚刚开始在一个新项目中使用lambdas,当应用程序崩溃时出现以下堆栈跟踪问题:
I/art: Rejecting re-init on previously-failed class java.lang.Class<com.test.-$Lambda$3>
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.test, PID: 18852
java.lang.NoClassDefFoundError: com.test.-$Lambda$3
... method which calls lambda ...
有趣的是它有时会起作用,但我仍然无法弄清楚是什么让它起作用,什么打破了。
jackOptions
和1.8 compatibility
都在build.gradle中启用。 compileSdkVersion
是25.设备正在运行Android 5.0。生成的apk定义了此com.test.-$Lambda$3
类。
除了完全启用lambdas之外还有什么应该做的吗?如何调试此问题以找出真正的根本原因?
更新1:
这听起来很奇怪,但看起来像lambda调用编译混乱。假设生成的APK已定义$Lambda$1:Runnable
和$Lambda$2:Consumer
,我看到特定的方法调用$Lambda$1
,而必须是$Lambda$2
。