Steve,

>Yes it's:
>
> java.lang.NoClassDefFoundError: javax/mail/internet/ParseException
>
>It can't work with mailet.jar in the phoenix/lib directory and
>mail_1_2.jar in the James SAR because this means that mailet.jar is
>loaded by the extenation ClassLoader and mail_1_2.jar is loaded by the
>Phoenix PolicyClassLoader. Since the PolicyClassLoader is higher in the
>delegation chain, mailet.jar cannot load any javax.mail.* classes.
>
Actaually, given that it is NoClassDefFoundError (and not 
ClassNotFoundException) , it is dependancy of java/mail that cannot be 
found, not the mailet jar itself.  I'd say that is the activaton jar and 
some shitty use of Class.ForName(..) on Sun's part.

For the record both of my containers publish a mailet.jar-like server to 
their hosted components without requiring any mokying with Phoenix's lib 
directory.

>I've since read Peter's mail which says he added the mailet classes into
>james.jar file and this approach also works, but only if the mailet.jar
>file does not also exist in the phoenix/lib.  The current build.xml file
>builds a separate mailet.jar file and then copies it into ${dist}/lib,
>i.e. the target phoenix/lib dir.
>  
>
As I say, this should not be necessary.

As long as we use ..

   this.getClass().getClassLoader().loadClass(..)

.. instead of ...

  Class.forName(..)

.. we should be fine (five occurences by the looks of things).


When we shift to hot installable mailets, you'll have a seperate 
classloader per mailet archive (the norm for these things).  Then you'll 
do ..

   mailetArchive.getClassLoader().loadClass(..)

.. or some such.

-ph


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to