classnotfoundexception…$$lambda$172

bt1cpqcv  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(331)

在我们的一台生产机器上,我们在运行时遇到了一个我从未见过的奇怪错误。

com/example/MyClass$$Lambda$172
Caused by java.lang.reflect.InvocationTargetException: null
Caused by: java.lang.NoClassDefFoundError: com/example/MyClass$$Lambda$172
Caused by: java.lang.ClassNotFoundException: com.example.MyClass$$Lambda$172
...

我想知道$$lambda$$172到底是什么意思。我假设lambda引用了一个生成的lambda表达式?那么172可能是生成代码中的一行吗?有没有办法看看那里到底发生了什么?查看myclass第172行只是一个空行,所以不能是这样。这是在JDK1.8版本25.261-b09上运行的。
总的说来,我希望你能给我一些提示,告诉我这里可能出了什么问题。请注意,有时相同的操作成功,不会抛出cnfe。
谢谢,斯文
编辑不幸的是,我不能添加一个最小的例子,因为这发生在客户的机器,我从来没有见过这种情况发生在开发或测试。
编译后嵌套类将存储在哪里?

nfg76nw0

nfg76nw01#

这里的问题不是真的找不到类,而是类的初始化失败了。然而,闭包本身是不可能发生这种情况的。closuret不能有静态初始值设定项。最有可能的是,这是第一次使用特定的接口。这个intaface有一个静态初始值设定项,它反过来使用反射。这会导致invoactiontargetexception。现在一个site总是由另一个异常引起的。这才是你真正感兴趣的根本原因。
由于你的信息非常稀少,我只能给你一个非常粗略的方向。。。

相关问题