Classes missing if application runs for a long time
- by Rogach
I have a funny problem - if my application runs for a long time ( 20h), then sometimes I get NoClassDefFound error - seems like JVM decided that the class is not going to be used anyway and GCd it.
To be a bit more specific, here's an example case:
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)
And I get the following exception:
Exception in thread "main" java.lang.NoClassDefFoundError: org/rogach/avalanche/ErrorHandler$
If that try/catch block runs for smaller amounts of time, everything works as expected.
If anyone is interested, here is the codebase in question: Avalanche
I need to note that I saw this and similar problems only on Cent OS 5 machines, using JRE 6u26 and Scala 2.9.1 / 2.9.2.
What could be the cause of this problem?