繁体   English   中英

ClassNotFoundException ...$$Lambda$172

[英]ClassNotFoundException …$$Lambda$172

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

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 行只是一个空行,所以不可能。 这是在 JDK 1.8 版本 25.261-b09 上运行的。

一般来说,我会很感激任何关于这里可能有什么问题的提示。 请注意,有时相同的操作会成功并且不会抛出 CNFE。

谢谢,斯文

编辑不幸的是,我无法添加一个最小的示例,因为这发生在客户机器上,而且我在开发或测试期间从未见过这种情况。

编译后嵌套的 class 将存储在哪里?

这里的问题并不是真的找不到 class,而是 class 的初始化失败。 但是,闭包本身不会发生这种情况。 闭包不能有 static 初始化程序。 最有可能这是特定界面的第一次使用。 并且那个 intaface 有一个 static 初始化程序,它又使用反射。 这会导致 InvoactionTargetException。 现在一个ITE总是由另一个异常引起的。 那是根本原因,你实际上感兴趣。

由于你的资料很稀少,这里我只能给你一个很粗略的方向……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM