In fact, I don't think it has anything to do with not
being able to find classes Service is referencing. I
changed the interface to read:
package a.b;
import java.io.IOException;
/**
* @version 0.1
*/
public interface Service
{
public void send (String a String b
throws IOException;
}
and I still get the same exception. I would hope the
problem is not that it can't find String or
IOException. So what is going on???
--- ixxus nexxus <[EMAIL PROTECTED]> wrote:
> This is the interface for the service I am trying to
> write:
>
> The ds class should be in ds.jar. It looks like that
> one is in the classpath. Pres is an interface which
> is also in the server-api.jar
>
> package a.b;
> import xxx.Pres;
> import java.io.IOException;
> import ds.DsException;
>
> /**
> * @version 0.1
> */
> public interface Service
> {
> public void send(Pres p, String s)
> throws IOException, DsException;
> }
>
>
> What is strange to me is that all the code that is
> in the implementation of Service I originally wrote
> in a class OriginalServiceImpl. This was also
> contained in the server-api/server-impl jars.
> Everything ran fine. Then I decided that it would
> make sense re-factor the code into two separate
> classes so I moved some of it into ServiceImpl and
> tried to make OriginalServiceImpl use Service and
> things stopped working. Does this have anything to
> do with package names, maybe? OriginalService is in
> a different package than Service.
>
> Thank you for your help.
>
>
>
>
> Stephen McConnell <[EMAIL PROTECTED]> wrote:
>
>
> > -----Original Message-----
> > From: ixxus nexxus [mailto:[EMAIL PROTECTED]
> > Sent: 02 December 2004 02:20
> > To: Avalon framework users
> > Subject: RE: classloaders?
> >
> > I think I'm using merlin-3.2.4-bis
> >
> > Are there any simple instructions for switching
> from
> > Merlin to Metro? Is it complicated? I could try it
> but
> > I'm not sure if adding another variable into the
> mix
> > will be constructive.
>
> Metro provides complete binary compatibility with
> Avalon components
> (providing you use the -Xavalon cli switch). The
> actual overhead is the
> fact that Metro is not released yet which means you
> would be building of
> our svn version. Upside is that we have a bunch of
> tools in place for
> things like automatic block generation - and all of
> the development
> community are now active on Metro - which means you
> will get a lot of
> support from other users. Downside is that we are
> somewhat 'brutal' is
> sorting things before a release which means you
> really need to follow
> both the support and dev list on DPML [1] and it
> pays to setup a
> connection to @dplml-metro on irc.freenode.net.
>
> In the medium term - it's a total plus proposition.
>
> > This is the debug output:
>
>
>
> > [DEBUG ] (xxx.classloader): classpath:
> >
>
file:/temp/xxx-1.2-src/repository/xxx/jars/server-impl-
> >
>
1.2.jar;file:/ds/lib/ds.jar;file:${user.dir}/./repository/xxx/jars/serve
> r-
> > api-1.2.jar;
>
> OK - so here we see that server-api-1.2.jar is added
> to the classloader.
>
> But here we have a problem.
>
> > [DEBUG ] (xxx.classloader.scanner): type:
> > xxx.SubscriptionManagerImpl
> > ---- exception report
>
>
>
> > Exception:
> > org.apache.avalon.composition.model.ModelException
> > Message: Component type [a.b.ServiceImpl] contains
> a
> > reference to the class [a/b/Service] which does
> not
> > exist in the classloader.
>
>
> So basically - a classloader is constructed based on
> the information
> supplied in you block. When the block is mounted -
> each of the jar file
> are scanned for component type descriptors (xinfo
> files). In your case
> the [a.b.ServiceImpl] class is located and a xinfo
> loaded. The xinfo
> states that the component is defined by the class
> a.b.ServiceImpl so the
> loader attempts to load this class (simply to verify
> everything before
> committing to the next stage). During the attempt to
> load the class an
> exception has occurred indicating that a supporting
> class is not
> available.
>
> The typical reason for this is that the supporting
> class is referencing
> another class that is not available in the
> classloader chain (the chain
> from system classloader to your component
> classloader).
>
> Could you post the source to the interface class?
> I'm rather interested
> in seeing what the actual service dependencies are -
> because at the end
> of the day - Merlin failed to load the service class
> and the real
> question is why was there a service class loading
> failure - and why
> don't you have something useful in the exception
> report about this. I.e.
> there is something wrong with you api definition but
> there is also
> something wrong with Merlin's reporting of the
> problem.
>
> Cheers, Steve.
>
> [1]
>
http://www.dpml.net/central/about/resources/lists.html
>
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
>
>
>
> ---------------------------------
> Do you Yahoo!?
> Yahoo! Mail - You care about security. So do we.
__________________________________
Do you Yahoo!?
Take Yahoo! Mail with you! Get it on your mobile phone.
http://mobile.yahoo.com/maildemo
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]