我有一个服务器进程崩溃了NoClassDefFoundError(下面复制)。我已经搜索了这个的原因,并且给出的答案(通常与路径相关)似乎与我所经历的一致(通常OP在第一次运行时立即遇到了这个问题)。在我的情况下,这个特定的过程已经运行了一个月+没有事件调用这个突然“变得未定义”的相同功能。什么可能导致这突然破裂?
我喜欢的两个场景是1)某种内存问题,无论是溢出还是无法将jar加载到内存中,或者2)某种程序损坏,比如如果命令是重新编译程序的话中间版本中止导致一个坏罐子,或者即使它完成它也打破了某种版本/链接。这是一个重要的猜想,我希望有人能够更好地理解java JVM(以及scala如何编译成java?)可以确认或拒绝这两种场景的可信性。
Uncaught error from thread [moosetracks-akka.actor.default-dispatcher-61633] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[moosetracks]
java.lang.NoClassDefFoundError: UsersManager$$anonfun$listDestinations$1
at UsersManager.listDestinations(moosetracks.scala:872)
at AdminActor.routeJson(moosetracks.scala:1139)
at AdminActor.adminRequest(moosetracks.scala:1244)
at AdminActor$$anonfun$receive$6.applyOrElse(moosetracks.scala:1027)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498)
at akka.actor.ActorCell.invoke(ActorCell.scala:456)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237)
at akka.dispatch.Mailbox.run(Mailbox.scala:219)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Caused by: java.lang.ClassNotFoundException: UsersManager$$anonfun$listDestinations$1
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
答案 0 :(得分:2)
前一段时间有一个类似的问题noticed that OOM can produce this symptom。
在那种情况下,这不是明确的诊断。没有验证类卸载。
这两种情况都包含一些“长期运行”的概念。
你说“以前的操作功能”,但也许你的意思是listDestinations
而不是需要匿名功能的代码路径。