私は面白い問題を抱えています - 私のアプリケーションが長時間 (> 20h) 実行されている場合、時々 NoClassDefFound エラーが発生します - JVM はクラスがとにかく使用されないことを決定し、それを GCd したようです。
もう少し具体的に言うと、以下に例を示します。
object ErrorHandler extends PartialFunction[Throwable,Unit] {
def isDefinedAt(t: Throwable) = true
def apply(e: Throwable) =e match {
// ... handle errors
}
}
// somewhere else in the code...
try {
// ... long running code, can take more than 20 hours to complete
} catch (ErrorHandler)
そして、次の例外が発生します。
Exception in thread "main" java.lang.NoClassDefFoundError: org/rogach/avalanche/ErrorHandler$
その try/catch ブロックの実行時間が短い場合、すべてが期待どおりに機能します。
興味のある方は、問題のコードベースをご覧ください: Avalanche
これと同様の問題はCent OS 5
、JRE 6u26 と Scala 2.9.1 / 2.9.2 を使用するマシンでのみ見られたことに注意する必要があります。
この問題の原因は何ですか?