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]

Reply via email to