Hi,

Pardon my ignorance, but as we also face this issue, I was wondering
what the best resolution is for the time being under Ant 1.4? Is the
best workaround to simply put /bea/wlserver6.0/lib/weblogic.jar on the
system CLASSPATH, or to reference all classfiles with the <support>
element and all weblogic.jar files with the classpath parameter? Putting
weblogic.jar on the system CLASSPATH certainly makes the errors go away,
but I would prefer to handle the errors within the buildfile if
possible. 

Cheers,

Matt

-----Original Message-----
From: Conor MacNeill [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, October 24, 2001 9:33 AM
To: [EMAIL PROTECTED]
Subject: Re: ejbjar and issues with class loading?


McVeigh, Ryan wrote:

> Background info:  Ant 1.4.1, WL 6.0 SP2.
> 
> I've got an <ejbjar ... /> tag built and I'm seeing a lot of warnings
from
> my classes that say something similar to:
> 
>    [ejbjar] Could not fully load class someClassName for super class
check
> 
> I see in the source for ejbjar (the GenericDeploymentTool.java file)
that
> this is a NoClassDefFoundError being thrown, which doesn't make sense
to me.



Let me try to explain this a little. The EJB spec says that all classes 
necessary for the EJB should be contained in the EJB jar. <ejbjar> has 
tried overtime to collect more of the necessary classes into the jar as 
per the spec. The way it achieves this at the moment is to load the bean

classes as java classes with a classloader. It then determines the 
superclasses and adds them to the jar. The NoClassDefFoundError occurs 
when the classpath given to ejbjar does not contain all of the classes 
necessary to instantiate the bean classes. This is what the "Could not 
fully load class blah" means. <ejbjar> will still beign a jar which will

probably work but it will not necessarily contain the super classes.

The <support> element provides a mechanism to add in other classes which

are necessary for the bean but which are not super classes.

Ant 1.5 will change this mechanism under the covers to actually analyse 
the bean classes at a bytecode level to determine all of the classes 
required automatically, without using reflection. This should give 
better results.


> 
> Second issue, same email - I'm also getting the complaint from ejbc
about
> home and remote interfaces from a bean being in the system classpath.


Yes, this was introduced into WLS 6.0. Since <ejbjar>'s classpath 
predated this, I added a separate attribute wlclasspath which is the 
classpath to use when running the weblogic.ejbc tool. <ejbjar> still 
needs the full classpath since it is doing its bean check thing, 
described above.


> Clearly that has something to do with the classpath and wlclasspath
> attributes to the weblogic element.  My build.destdir property is the
entire
> output of all of my built classes.  How might I specify these things
so that
> ejbc doesn't complain about seeing the generated classes in the
classpath?


You should be able to take the build.destdir out of the wlclasspath and 
the complainst should stop. Let me know if that causes you issues.


> I'd really like to be able to make an ejbjar work without warnings.


Josh Lannin provided a patch which will allow you to silence ejbc for 
these warnings. It isn't documented yet, though.


Conor



Reply via email to