Okay, I admit it. I was completely faked out by the NoClassDefFoundError message. Here's what happened:
The NoClassDefFoundError flagged class A, but A was present in a JAR file that was part of the EAR file and listed on the Class-Path line in the MANIFEST.MF. That's what was throwing me.
Then I wondered if maybe its ancestor class was missing? No, it was present, too. Then I checked the declared interfaces.
That's when I discovered an interface from a 3rd party JAR (Hibernate) implemented by an ancestor class was missing from the deployment. The Hibernate JAR was deployed in my 3.2.3 server, but not in the 3.2.4 server.
I've probably been here before, but that #%$&@ NoClassDefFoundError is just so misleading! It says XYZ class isn't found (No-Class-Def-Found), but that's not the problem at all! It's there alright - and I saw nothing in the stack trace gave the slightest hint there was another class or interface that was really the problem. I guess that's the only error ClassLoaders know about, but it would sure be helpful if the class loader error said, "Unable to load class XYZ because the ABC interface it depends on wasn't found."
I'm sorry for taking up your time. Thanks for letting me vent a little.
I've been having this issue since Java 1.1.