4 Replies Latest reply on Oct 28, 2004 6:26 PM by ericl

    deploying multiple jar files

    ericl

      I'm trying to deploy two jar files in my deploy directory. The classes in A.jar depend on classes in B.jar. When I initially deploy, I get a NoClassDefFoundError and A isn't deployed. However, if I remove A and hot deploy it, it deploys correctly.

      How can I indicate to JBoss that A depends on B?

      Thanks,
      Eric

        • 1. Re: deploying multiple jar files
          ericl

          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.

          • 2. Re: deploying multiple jar files
            robisz

            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.

            Good luck
            robisz

            • 3. Re: deploying multiple jar files
              ericl

              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.


              Thanks,
              Eric


              • 4. EUREKA!
                ericl

                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.

                -Eric