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.java, 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.java, 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(DefaultComponentFactory.java, Compiled Code) at org.apache.avalon.excalibur.component.ThreadSafeComponentHandler.initialize(ThreadSafeComponentHandler.java, Compiled Code) at org.apache.cocoon.components.language.generator.GeneratorSelector.addGenerator(GeneratorSelector.java, Compiled Code) at org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.addCompiledComponent(ProgramGeneratorImpl.java, Compiled Code) at org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.generateResource(ProgramGeneratorImpl.java, Compiled Code) at org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.createResource(ProgramGeneratorImpl.java, Compiled Code) at org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.load(ProgramGeneratorImpl.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]>