You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by "Carlos M. S. Bento Nogueira" <cm...@student.dei.uc.pt> on 2005/05/22 19:07:40 UTC

Flowscript class not found problem

Hello!

I'm using cocoon 2.1.7 on tomcat 5.5 and in my
flowscript when i do:
cocoon.getComponent(Packages.hib.PersistenceFactory.ROLE)

i always get this exception:
java.lang.NoClassDefFoundError: hib/PersistenceFactory$1 .

This PersistenceFactory class is in
\Web-inf\classes\hib\

and the role is declared on
\Web-inf\cocoon.xconf
as
<component class="hib.HibernateFactory" role="hib.PersistenceFactory"/>


What can be the problem here??
The PersistenceFactory is an interface class and Role is a string of this
type:
  String ROLE = PersistenceFactory.class.getName();





Thanks in advance for your patience and help,
CarlosN.









---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Flowscript class not found problem

Posted by Johannes Textor <jc...@gmx.de>.
Carlos M. S. Bento Nogueira schrieb:

> Hallo Johannes,
>
> Yes. They are both in the same directory WEB-INF/classes/hib.
> Here is the source code for both file.


Hmm the sources look OK.
 From my limited Java knowledge, I would say the $1 at the end
of the error message means that Java tries to access an anonymous
subclass definition which it cannot find. The only place I can think
of is

String ROLE = PersistenceFactory.class.getName();

Just for now (and to make sure it's not a JDK 5 issue): does

String ROLE = "hib.PersistanceFactory";

fix the problem ?

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re2: Flowscript class not found problem

Posted by "Carlos M. S. Bento Nogueira" <cm...@student.dei.uc.pt>.
Hello everyone.

Just solved my problem by copying missing class
PersistenceFactory$1.class to directory WEB-INF\classes\hib

Thanks again for your support and patience,
CarlosN

On Mon, 23 May 2005, Carlos M. S. Bento Nogueira wrote:

> Hallo Johannes,
>
> Yes. They are both in the same directory WEB-INF/classes/hib.
> Here is the source code for both file.
>
>
> HibernateFactory.java
> *************************************************************
> package hib;
>
> import org.apache.avalon.framework.logger.AbstractLogEnabled;
> import org.apache.avalon.framework.thread.ThreadSafe;
> import org.apache.avalon.framework.configuration.Configuration;
> import org.apache.avalon.framework.configuration.Configurable;
> import org.apache.avalon.framework.configuration.ConfigurationException;
> import org.apache.avalon.framework.activity.Disposable;
> import org.apache.avalon.framework.activity.Initializable;
> import org.apache.avalon.framework.service.ServiceManager;
> import org.apache.avalon.framework.service.Serviceable;
> import org.apache.avalon.framework.service.ServiceException;
> import org.apache.avalon.excalibur.datasource.DataSourceComponent;
> import org.apache.avalon.framework.service.ServiceSelector;
>
> // import all classes from your package so you can later persist them
> import hib.*;
>
> public class HibernateFactory
>        extends AbstractLogEnabled
>        implements PersistenceFactory, Configurable, Serviceable, 
> Initializable,
>            Disposable, ThreadSafe
> {
>
>    private boolean initialized = false;
>    private boolean disposed = false;
>    private ServiceManager manager = null;
>
>    // do not confuse with Avalon Configuration, Cocoon Session, etc.
>    net.sf.hibernate.cfg.Configuration cfg;
>    net.sf.hibernate.SessionFactory sf;
>
>    //for debugging: which instance am I using?
>    long time_start;
>
>    public HibernateFactory() {
>        System.out.println("Hibernate factory instance created");
>    }
>
>    public final void configure(Configuration conf) throws 
> ConfigurationException {
>        if (initialized || disposed) {
>            throw new IllegalStateException ("Illegal call");
>        }
>        System.out.println("Hibernate configure called");
>    }
>
>    public final void service(ServiceManager smanager) throws 
> ServiceException {
>        if (initialized || disposed) {
>            throw new IllegalStateException ("Illegal call");
>        }
>
>        if (null == this.manager) {
>            this.manager = smanager;
>        }
>        System.out.println("Hibernate service called");
>    }
>
>    public final void initialize() throws Exception {
>        if (null == this.manager) {
>            throw new IllegalStateException("Not Composed");
>        }
>
>        if (disposed) {
>            throw new IllegalStateException("Already disposed");
>        }
>
>        //  adapt:
>        //  build sessionfactory
>        //  map all classes we need
>        //  keep in sync with configuration file
>        //
>        try {
>              cfg = new net.sf.hibernate.cfg.Configuration();
>
>              /* ***** ADD PERSISTENT CLASSES, VARIANT 1 ***** */
>              // persistent classes can be added here using
>
>               cfg.addClass(hib.User.class);
>
>              // Make sure the corresponding .class and .hbm.xml files are 
> located in
>              // (the same directory of) your classpath (e.g. 
> WEB-INF/classes)
>               //This method requires correct config of hibernate.properties 
> file
>               sf = cfg.buildSessionFactory();
>
>              /* ***** ADD PERSISTENT CLASSES, VARIANT 2 ***** */
>              // alternatively, you might be using a hibernate.cfg.xml file 
> to load mappings,
>              // then use the following line instead:
>
>                //sf = cfg.configure().buildSessionFactory();
>
>              // no additional cfg.addClass(...) statements needed, since you 
> can define
>              // mappings in the XML config file
>        }
>        catch ( Exception e) {
>              e.printStackTrace();
>              getLogger().error("Hibernate:" + e.getMessage());
>              return;
>        }
>        this.initialized = true;
>        System.out.println("Hibernate initialize called");
>    }
>
>    public final void dispose()  {
>        //
>        try {
>              sf.close();
>        }
>        catch ( Exception e) {
>              getLogger().error("Hibernate:" + e.getMessage());
>        }
>        finally {
>              sf = null;
>              cfg = null;
>        }
>        this.disposed = true;
>        this.manager = null;
>        System.out.println("Hibernate dispose called");
>    }
>
>
>
>    public net.sf.hibernate.Session createSession() {
>      net.sf.hibernate.Session hs;
>      DataSourceComponent datasource = null;
>
>        // When creating a session, use a connection from
>        // cocoon's connection pool
>      try {
>        // Select the DataSourceComponent named "test"
>        // This is a normal SQL connection configured in cocoon.xconf
>        ServiceSelector dbselector =(ServiceSelector) 
> manager.lookup(DataSourceComponent.ROLE+"Selector");
>        datasource = (DataSourceComponent) dbselector.select("teste");
>                //name as defined in cocoon.xconf
>        hs = sf.openSession(datasource.getConnection());
>         System.out.println("Criei sess�o com a pooling do cocoon...");
>      }
>      catch ( Exception e) {
>          e.printStackTrace();
>          getLogger().error("Hibernate: " + e.getMessage());
>          hs = null;
>      }
>      return hs;
>    }
> }
> *****************************************************************
> PersistenceFactory.java
>
> package hib;
>
> import org.apache.avalon.framework.component.*;
>
> public interface  PersistenceFactory extends Component {
>    String ROLE = PersistenceFactory.class.getName();
>
>    public net.sf.hibernate.Session createSession();
> }
>
> *****************************************************************
>
> Aditional Notes:
> - i used jdk1.5 to compile both classes without problem
> - i use tomcat 5.5 as container
> - cocoon version is 2.1.7
> - hibernate version 2.1.8
>
> Thanks is advance,
> CarlosN.
>
> ps: shouldn't we do PersistenceFactory.class.getName(); in other way??
> On Sun, 22 May 2005, Johannes Textor wrote:
>
>> Hi Carlos !
>> 
>> You should not need to import the class explicitly when
>> addressing it via packages.
>> 
>> Another question, though: Do you also have the "HibernateFactory"
>> class in WEB-INF/classes/hib ?
>> 
>> If so, please post the source codes of both to have a look.
>> 
>> Greetings,
>> Johannes
>> 
>> Carlos M. S. Bento Nogueira schrieb:
>> 
>>> hi mike,
>>> 
>>> that's a good point. i just tried it with the same result. Yes i restarted
>>> tomcat before doing it...
>>> 
>>> Greetings,
>>> CarlosN.
>>> 
>>> On Sun, 22 May 2005, Michel Erard wrote:
>>> 
>>>> hi carlos,
>>>> 
>>>> did you made an import like this 
>>>> "importClass(Packages.ch.bfh.hti.elquerito.User);" in your flowscript 
>>>> file?
>>>> 
>>>> regards,
>>>> 
>>>> Mike
>>>> 
>>>> 
>>>> Am 22.05.2005 um 19:07 schrieb Carlos M. S. Bento Nogueira:
>>>> 
>>>>> Hello!
>>>>> 
>>>>> I'm using cocoon 2.1.7 on tomcat 5.5 and in my
>>>>> flowscript when i do:
>>>>> cocoon.getComponent(Packages.hib.PersistenceFactory.ROLE)
>>>>> 
>>>>> i always get this exception:
>>>>> java.lang.NoClassDefFoundError: hib/PersistenceFactory$1 .
>>>>> 
>>>>> This PersistenceFactory class is in
>>>>> \Web-inf\classes\hib\
>>>>> 
>>>>> and the role is declared on
>>>>> \Web-inf\cocoon.xconf
>>>>> as
>>>>> <component class="hib.HibernateFactory" role="hib.PersistenceFactory"/>
>>>>> 
>>>>> 
>>>>> What can be the problem here??
>>>>> The PersistenceFactory is an interface class and Role is a string of 
>>>>> this
>>>>> type:
>>>>>  String ROLE = PersistenceFactory.class.getName();
>>>>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
>> For additional commands, e-mail: users-help@cocoon.apache.org
>> 
>
>

-- 

Re: Flowscript class not found problem

Posted by "Carlos M. S. Bento Nogueira" <cm...@student.dei.uc.pt>.
Hallo Johannes,

Yes. They are both in the same directory WEB-INF/classes/hib.
Here is the source code for both file.


HibernateFactory.java
*************************************************************
package hib;

import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.excalibur.datasource.DataSourceComponent;
import org.apache.avalon.framework.service.ServiceSelector;

// import all classes from your package so you can later persist them
import hib.*;

public class HibernateFactory
         extends AbstractLogEnabled
         implements PersistenceFactory, Configurable, Serviceable, 
Initializable,
             Disposable, ThreadSafe
{

     private boolean initialized = false;
     private boolean disposed = false;
     private ServiceManager manager = null;

     // do not confuse with Avalon Configuration, Cocoon Session, etc.
     net.sf.hibernate.cfg.Configuration cfg;
     net.sf.hibernate.SessionFactory sf;

     //for debugging: which instance am I using?
     long time_start;

     public HibernateFactory() {
         System.out.println("Hibernate factory instance created");
     }

     public final void configure(Configuration conf) throws 
ConfigurationException {
         if (initialized || disposed) {
             throw new IllegalStateException ("Illegal call");
         }
         System.out.println("Hibernate configure called");
     }

     public final void service(ServiceManager smanager) throws 
ServiceException {
         if (initialized || disposed) {
             throw new IllegalStateException ("Illegal call");
         }

         if (null == this.manager) {
             this.manager = smanager;
         }
         System.out.println("Hibernate service called");
     }

     public final void initialize() throws Exception {
         if (null == this.manager) {
             throw new IllegalStateException("Not Composed");
         }

         if (disposed) {
             throw new IllegalStateException("Already disposed");
         }

         //  adapt:
         //  build sessionfactory
         //  map all classes we need
         //  keep in sync with configuration file
         //
         try {
               cfg = new net.sf.hibernate.cfg.Configuration();

               /* ***** ADD PERSISTENT CLASSES, VARIANT 1 ***** */
               // persistent classes can be added here using

                cfg.addClass(hib.User.class);

               // Make sure the corresponding .class and .hbm.xml files are 
located in
               // (the same directory of) your classpath (e.g. 
WEB-INF/classes)
                //This method requires correct config of 
hibernate.properties file
                sf = cfg.buildSessionFactory();

               /* ***** ADD PERSISTENT CLASSES, VARIANT 2 ***** */
               // alternatively, you might be using a hibernate.cfg.xml 
file to load mappings,
               // then use the following line instead:

                 //sf = cfg.configure().buildSessionFactory();

               // no additional cfg.addClass(...) statements needed, since 
you can define
               // mappings in the XML config file
         }
         catch ( Exception e) {
               e.printStackTrace();
               getLogger().error("Hibernate:" + e.getMessage());
               return;
         }
         this.initialized = true;
         System.out.println("Hibernate initialize called");
     }

     public final void dispose()  {
         //
         try {
               sf.close();
         }
         catch ( Exception e) {
               getLogger().error("Hibernate:" + e.getMessage());
         }
         finally {
               sf = null;
               cfg = null;
         }
         this.disposed = true;
         this.manager = null;
         System.out.println("Hibernate dispose called");
     }



     public net.sf.hibernate.Session createSession() {
       net.sf.hibernate.Session hs;
       DataSourceComponent datasource = null;

         // When creating a session, use a connection from
         // cocoon's connection pool
       try {
         // Select the DataSourceComponent named "test"
         // This is a normal SQL connection configured in cocoon.xconf
         ServiceSelector dbselector =(ServiceSelector) 
manager.lookup(DataSourceComponent.ROLE+"Selector");
         datasource = (DataSourceComponent) dbselector.select("teste");
                 //name as defined in cocoon.xconf
         hs = sf.openSession(datasource.getConnection());
          System.out.println("Criei sess�o com a pooling do cocoon...");
       }
       catch ( Exception e) {
           e.printStackTrace();
           getLogger().error("Hibernate: " + e.getMessage());
           hs = null;
       }
       return hs;
     }
}
*****************************************************************
PersistenceFactory.java

package hib;

import org.apache.avalon.framework.component.*;

public interface  PersistenceFactory extends Component {
     String ROLE = PersistenceFactory.class.getName();

     public net.sf.hibernate.Session createSession();
}

*****************************************************************

Aditional Notes:
  - i used jdk1.5 to compile both classes without problem
  - i use tomcat 5.5 as container
  - cocoon version is 2.1.7
  - hibernate version 2.1.8

Thanks is advance,
CarlosN.

ps: shouldn't we do PersistenceFactory.class.getName(); in other way??
On Sun, 22 May 2005, Johannes Textor wrote:

> Hi Carlos !
>
> You should not need to import the class explicitly when
> addressing it via packages.
>
> Another question, though: Do you also have the "HibernateFactory"
> class in WEB-INF/classes/hib ?
>
> If so, please post the source codes of both to have a look.
>
> Greetings,
> Johannes
>
> Carlos M. S. Bento Nogueira schrieb:
>
>> hi mike,
>> 
>> that's a good point. i just tried it with the same result. Yes i restarted
>> tomcat before doing it...
>> 
>> Greetings,
>> CarlosN.
>> 
>> On Sun, 22 May 2005, Michel Erard wrote:
>> 
>>> hi carlos,
>>> 
>>> did you made an import like this 
>>> "importClass(Packages.ch.bfh.hti.elquerito.User);" in your flowscript 
>>> file?
>>> 
>>> regards,
>>> 
>>> Mike
>>> 
>>> 
>>> Am 22.05.2005 um 19:07 schrieb Carlos M. S. Bento Nogueira:
>>> 
>>>> Hello!
>>>> 
>>>> I'm using cocoon 2.1.7 on tomcat 5.5 and in my
>>>> flowscript when i do:
>>>> cocoon.getComponent(Packages.hib.PersistenceFactory.ROLE)
>>>> 
>>>> i always get this exception:
>>>> java.lang.NoClassDefFoundError: hib/PersistenceFactory$1 .
>>>> 
>>>> This PersistenceFactory class is in
>>>> \Web-inf\classes\hib\
>>>> 
>>>> and the role is declared on
>>>> \Web-inf\cocoon.xconf
>>>> as
>>>> <component class="hib.HibernateFactory" role="hib.PersistenceFactory"/>
>>>> 
>>>> 
>>>> What can be the problem here??
>>>> The PersistenceFactory is an interface class and Role is a string of this
>>>> type:
>>>>  String ROLE = PersistenceFactory.class.getName();
>>>> 
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>

-- 

Re: Flowscript class not found problem

Posted by Johannes Textor <jc...@gmx.de>.
Hi Carlos !

You should not need to import the class explicitly when
addressing it via packages.

Another question, though: Do you also have the "HibernateFactory"
class in WEB-INF/classes/hib ?

If so, please post the source codes of both to have a look.

Greetings,
Johannes

Carlos M. S. Bento Nogueira schrieb:

> hi mike,
>
> that's a good point. i just tried it with the same result. Yes i 
> restarted
> tomcat before doing it...
>
> Greetings,
> CarlosN.
>
> On Sun, 22 May 2005, Michel Erard wrote:
>
>> hi carlos,
>>
>> did you made an import like this 
>> "importClass(Packages.ch.bfh.hti.elquerito.User);" in your flowscript 
>> file?
>>
>> regards,
>>
>> Mike
>>
>>
>> Am 22.05.2005 um 19:07 schrieb Carlos M. S. Bento Nogueira:
>>
>>> Hello!
>>>
>>> I'm using cocoon 2.1.7 on tomcat 5.5 and in my
>>> flowscript when i do:
>>> cocoon.getComponent(Packages.hib.PersistenceFactory.ROLE)
>>>
>>> i always get this exception:
>>> java.lang.NoClassDefFoundError: hib/PersistenceFactory$1 .
>>>
>>> This PersistenceFactory class is in
>>> \Web-inf\classes\hib\
>>>
>>> and the role is declared on
>>> \Web-inf\cocoon.xconf
>>> as
>>> <component class="hib.HibernateFactory" role="hib.PersistenceFactory"/>
>>>
>>>
>>> What can be the problem here??
>>> The PersistenceFactory is an interface class and Role is a string of 
>>> this
>>> type:
>>>  String ROLE = PersistenceFactory.class.getName();
>>>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Flowscript class not found problem

Posted by "Carlos M. S. Bento Nogueira" <cm...@student.dei.uc.pt>.
hi mike,

that's a good point. i just tried it with the same result. Yes i restarted
tomcat before doing it...

Greetings,
CarlosN.

On Sun, 22 May 2005, Michel Erard wrote:

> hi carlos,
>
> did you made an import like this 
> "importClass(Packages.ch.bfh.hti.elquerito.User);" in your flowscript file?
>
> regards,
>
> Mike
>
>
> Am 22.05.2005 um 19:07 schrieb Carlos M. S. Bento Nogueira:
>
>> Hello!
>> 
>> I'm using cocoon 2.1.7 on tomcat 5.5 and in my
>> flowscript when i do:
>> cocoon.getComponent(Packages.hib.PersistenceFactory.ROLE)
>> 
>> i always get this exception:
>> java.lang.NoClassDefFoundError: hib/PersistenceFactory$1 .
>> 
>> This PersistenceFactory class is in
>> \Web-inf\classes\hib\
>> 
>> and the role is declared on
>> \Web-inf\cocoon.xconf
>> as
>> <component class="hib.HibernateFactory" role="hib.PersistenceFactory"/>
>> 
>> 
>> What can be the problem here??
>> The PersistenceFactory is an interface class and Role is a string of this
>> type:
>>  String ROLE = PersistenceFactory.class.getName();
>> 
>> 
>> 
>> 
>> 
>> Thanks in advance for your patience and help,
>> CarlosN.
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
>> For additional commands, e-mail: users-help@cocoon.apache.org
>> 
>> 
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>

-- 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Flowscript class not found problem

Posted by Michel Erard <co...@besonet.ch>.
hi carlos,

did you made an import like this 
"importClass(Packages.ch.bfh.hti.elquerito.User);" in your flowscript 
file?

regards,

Mike


Am 22.05.2005 um 19:07 schrieb Carlos M. S. Bento Nogueira:

> Hello!
>
> I'm using cocoon 2.1.7 on tomcat 5.5 and in my
> flowscript when i do:
> cocoon.getComponent(Packages.hib.PersistenceFactory.ROLE)
>
> i always get this exception:
> java.lang.NoClassDefFoundError: hib/PersistenceFactory$1 .
>
> This PersistenceFactory class is in
> \Web-inf\classes\hib\
>
> and the role is declared on
> \Web-inf\cocoon.xconf
> as
> <component class="hib.HibernateFactory" role="hib.PersistenceFactory"/>
>
>
> What can be the problem here??
> The PersistenceFactory is an interface class and Role is a string of 
> this
> type:
>  String ROLE = PersistenceFactory.class.getName();
>
>
>
>
>
> Thanks in advance for your patience and help,
> CarlosN.
>
>
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org