PS... If anyone has this problem and needs temporary relief, I've found that turning off the StrictVerifier in server/default/conf/jboss-service.xml allows the jars to deploy, although still with the aesthetically displeasing startup stack traces and the risk that a true EJB problem will go undetected.
You should do one of the following:
-Archive your jars to an ear. It probably solves the problem.
-Put your common classes to a separate jar and copy it to
lib directory of your server conf.
Hmmm. I tried using the Ant ear task to create an ear file with all my jars inside. I added a single module pointing to A.jar in my application.xml file, like so:
<application id="..."> ... <module id="module A"> <ejb>A.jar</ejb> </module> </application>
I then packaged A.jar and B.jar in this .ear file. Upon deploying this, I received the same NoClassDefFoundError.
I'd like to avoid placing jar files in the lib directory, as this would prevent me from hot deploying that part of my application. Does anyone have any other suggestions? It seems impossible to me that I'm the first person to run into this issue, but my searches through the forum archives haven't uncovered much to go on.
OK, I've got it figured out. The packaging question is a red herring.
A.jar depends on MANY Class files in B.jar, but it turns out that only one Class was causing a problem. This particular Class in B.jar is a public static inner interface, a rather unusual and rare programming choice. While this is legit and should work, it's not surprising that no one else has seen this.
I just broke out the inner interface into it's own proper .java file and everything deploys correctly.
Sincere thanks to all for reading and responding.