Hi Erwin,

Christian Schmitt told you where to place the class files. Maybe you will
laugh, but it is neccessary to compile your classes externally. Cocoon
doesn't do it for you. When you read about cocoon someone (like me for the
first time) could assume that cocoon could be able to do the compilation...

Best regards
- Volker -

-----Original Message-----
From: Erwin [mailto:[EMAIL PROTECTED]]
Sent: Donnerstag, 28. Marz 2002 13:35
To: Cocoon Users mailing list
Subject: Error when deploying own generator


Hi,

I have a program that dynamically generates XML content and to integrate
it with Cocoon 2 I have tried to write my own generator. But every time I
try to test it, I get a java.lang.NoClassDefFoundError:
org/apache/cocoon/generation/AbstractGenerator

I guess it has something to do with an incorrect classpath, but I have
tried a lot and haven't been able to solve it.

---o---

My setup:

DEC Alpha Personal Workstation 500a
Redhat Linux 7.1
Jakarta Tomcat 3.2.3
Cocoon 2.0.1
Compaq JDK for Alpha, version 1.3.1-1
Output of java -version
        java version "1.3.1"
        Java(TM) 2 Runtime Environment, Standard Edition
        Classic VM (build 1.3.1-1, native threads, jit)

---o---

I made following changes to the root sitemap to test my generator:
In <map:generators> added:
        <map:generator name="rmigen" src="rmitest.Client"/>

In a <map:pipeline> element added:
        <map:match pattern="rmitest">
          <map:generate type="rmigen"/>
          <map:serialize type="xml"/>
        </map:match>

Then I stopped Tomcat (and thus Cocoon), removed the Cocoon-directory in
the tomcat work directory, adjusted the classpath so the class
rmitest.Client would be found and then restarted Tomcat.

---o---

I then tried to access http://localhost:8080/cocoon/rmitest but that
resulted in a 'fatal error'. Looking in sitemap.log I found the following:
ERROR   (2002-03-27) 23:21.40:190   [sitemap] (/cocoon/)
Thread-23/Handler: Error compiling sitemap
java.lang.NoClassDefFoundError:
org/apache/cocoon/generation/AbstractGenerator
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java, Compiled
Code)
        at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java,
Compiled Code)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java,
Compiled Code)
        at java.net.URLClassLoader.access$100(URLClassLoader.java,
Compiled Code)
        at java.net.URLClassLoader$1.run(URLClassLoader.java, Compiled
Code)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java, Compiled
Code)
        at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled
Code)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java,
Compiled Code)
        at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled
Code)
        at
org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.j
ava,
Compiled Code)
        at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled
Code)
        at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled
Code)
        at org.apache.cocoon.util.ClassUtils.loadClass(ClassUtils.java,
Compiled Code)
        at
org.apache.cocoon.sitemap.AbstractSitemap.load_component(AbstractSitemap.jav
a,
Compiled Code)
        at
org.apache.cocoon.www.sitemap_xmap$Configurer.configGenerators(sitemap_xmap.
java,
Compiled Code)
        at org.apache.cocoon.www.sitemap_xmap.configure(sitemap_xmap.java,
Compiled Code)
        at
org.apache.avalon.excalibur.component.DefaultComponentFactory.newInstance(De
faultComponentFactory.java,
Compiled Code)
        at
org.apache.avalon.excalibur.component.ThreadSafeComponentHandler.initialize(
ThreadSafeComponentHandler.java,
Compiled Code)
        at
org.apache.cocoon.components.language.generator.GeneratorSelector.addGenerat
or(GeneratorSelector.java,
Compiled Code)
        at
org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.addComp
iledComponent(ProgramGeneratorImpl.java,
Compiled Code)
        at
org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.generat
eResource(ProgramGeneratorImpl.java,
Compiled Code)
        at
org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.createR
esource(ProgramGeneratorImpl.java,
Compiled Code)
        at
org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.load(Pr
ogramGeneratorImpl.java,
Compiled Code)
        at org.apache.cocoon.sitemap.Handler.run(Handler.java, Compiled
Code)
        at java.lang.Thread.run(Thread.java:484)

---o---

The following is the code from my generator

package rmitest;

import java.io.IOException;
import java.io.StringReader;

import org.xml.sax.*;
import org.xml.sax.helpers.*;

import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.generation.AbstractGenerator;

public class Client extends AbstractGenerator {

        public void generate() throws IOException, SAXException,
ProcessingException
        {
                String message = "<leeg/>";

                XMLReader xmlreader = new org.apache.xerces.parsers.SAXParser();
                xmlreader.setContentHandler(super.xmlConsumer);
                InputSource source = new InputSource(new StringReader(message));
                xmlreader.parse(source);
        }

}

---o---

To start Tomcat I use the following script:
(everything actually on one line, but here on multiple lines for clarity)
(large heapsize is so that fop won't give a java.lang.OutOfMemoryError)
java -Xmx256217728
-cp /usr/local/jakarta-tomcat-3.2.3/classes:
/usr/local/jakarta-tomcat-3.2.3/lib/ant.jar:
/usr/local/jakarta-tomcat-3.2.3/lib/jasper.jar:
/usr/local/jakarta-tomcat-3.2.3/lib/servlet.jar:
/usr/local/jakarta-tomcat-3.2.3/lib/webserver.jar:
/usr/local/jakarta-tomcat-3.2.3/lib/xercesImpl-2.0.0.jar:
/usr/local/jakarta-tomcat-3.2.3/lib/xml-apis.jar:
/usr/local/jakarta-tomcat-3.2.3/lib/zparser.jar:
/usr/java/jdk1.3.1/lib/tools.jar:
/home/erwin/public_html/thesis/coc2/src/be/ac/kuleuven/cs/rmitest/compiled/
-Dtomcat.home=/usr/local/jakarta-tomcat-3.2.3
org.apache.tomcat.startup.Tomcat

The last path in the classpath is the location of the generator
(rmitest/Client.class thus).

---o---

I use the following command to compile my generator:
javac -classpath .:jar/xerces.jar:
/usr/local/jakarta-tomcat-3.2.3/webapps/cocoon/WEB-INF/lib/cocoon-2.0.1.jar:
/usr/local/jakarta-tomcat-3.2.3/webapps/cocoon/WEB-INF/lib/avalon-framework-
4.1.1.jar:
/usr/local/jakarta-tomcat-3.2.3/webapps/cocoon/WEB-INF/lib/avalon-excalibur-
4.1.jar
-d compiled/ rmitest/Client.java

---o---

Well, the obvious question is: how can I get my generator to work?
Have I forgotten/overlooked something or what am I doing wrong?

Tnx in advance.


---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>

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


---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>

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

Reply via email to