【问题标题】:NoClassDefFoundError when use kotlin Lazy with inner class将 kotlin Lazy 与内部类一起使用时出现 NoClassDefFoundError
【发布时间】:2021-05-12 20:36:05
【问题描述】:

只需考虑以下代码:

fun doAction(data: Any?, action: (Any?) -> Unit) {
    action(data)
}

class Outer {
    val a = "a"
    val b = "b"
    val inner by lazy { Inner() }

    inner class Inner {
        init {
            doAction(a) { println(it) }
            doAction(b) { println(it) }
        }
    }
}

fun main() {
    Outer().inner
}

我希望得到结果,打印“a”和“b”,但只打印“a”和错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/example/Outer$Inner$2 (wrong name: org/example/Outer$inner$2)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)

kotlin 版本:1.3.72

【问题讨论】:

  • Kotlin 1.4似乎没有问题
  • @AnimeshSahu 我在使用 kolin 1.4.10 时会遇到同样的错误

标签: java kotlin jvm lazy-evaluation


【解决方案1】:

这是一个变量声明问题

当我将val inner 更改为val temp 时,它不会出错

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-02
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多