You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Sriram Narayanan <sr...@yahoo.com> on 2001/12/01 07:16:19 UTC

Solved : ClassNotFound Exception when loading Tomcat 4.0.1 via URLClassLoader

Hi all,

I've used the following workaround to address this problem.

I've created an executable jar for my UI class, and have added the bootstrap.jar file to the Class-Path manifest attribute. This works.

--- begin manifest fiel contents ---
Manifest-Version: 1.0
Main-Class: test.TCStart
Created-By: OESI
Class-Path: bin/bootstrap.jar bin/tools.jar
--- end manifest file contents ---

This lets me run the text.TCStart class, and load tomcat 4.0.1 and load tools.jar too.

What I'm planning to tackle next is asking the SystemClassLoader to load additional jars, the URLs/path of which I shall read form a properties file.

Regards,

Sriram



------- Start of forwarded message -------
From: Sriram Narayanan <sr...@yahoo.com>
To: tomcat-dev@jakarta.apache.org
Reply-To: "Tomcat Developers List" <to...@jakarta.apache.org>
Subject: ClassNotFound Exception when loading Tomcat 4.0.1 via URLClassLoader
Date: 30/11/2001 9:24:34 AM

Hello all,

I'm trying to write a Swing based UI that'll help manage Tomcat.
Towards that end, I'm first trying to load Tomcat via a URLCLassLoader. This is so that one can load and test different Tomcat releases, and builds, and jar combinations.

My idea is to load Tomcat  via a URLCLassloader.
This thing works for Tomcat 3.3, but I'm facing the following problem with Tomcat 4.0.1

Any ideas ?

Thanks,

Sriram

------- Start of forwarded message -------
From: Sriram N <sr...@yahoo.com>
To: Tomcat Developers List <to...@jakarta.apache.org>
Reply-To: "Tomcat Developers List" <to...@jakarta.apache.org>
Subject: ClassNotFound Exception when loading Tomcat 4.0.1 via URLClassLoader
Date: 29/11/2001 6:43:02 PM

Hi all,

I'm trying to write a java class that will load Tomcat 4.0.1 for me.
My goal is:
	-> Do not use the classpath. The CLASSPATH env variable's contents are clear
be me first.
	-> Use the URLClassLoader to get started.

This technique works with Tomcat 3.3

With Tomcat 4.0.1 however, I get a ClassNotFoundException for
org.apache.catalina.loader.Reloader which is in the same bootstrap.jar that is
used to load 
org.apache.catalina.startup.Bootstrap

However, when I stick to the batch file which adds bootstrap.jar to the system
CLASSPATH, tomcat runs OK, as usual.

Could some one point me to what I'm missing or doing wrong ? Thanks.

Here's the code that I use to load Tomcat 4.0.1

------ begin code --------
public class TCStart{
	public static void main(String args[]){
		try{
			System.setProperty("catalina.home","f:/tc4.0.1/");
			System.setProperty("catalina.base","f:/tc4.0.1/");
			System.setProperty("java.class.path","");

			java.io.File file = new java.io.File("f:/tc4.0.1/bin/bootstrap.jar");
			java.net.URL[] urls = new java.net.URL[]{file.toURL()};
			java.net.URLClassLoader loader = new java.net.URLClassLoader(urls);
			Class aClass = loader.loadClass("org.apache.catalina.startup.Bootstrap");
			String classLoaderName = aClass.getClassLoader().getClass().getName();
			String className = aClass.getName();
			System.out.println("ClassName " + className);
			System.out.println("ClassLoader " + classLoaderName);
			//Class aClass = Class.forName("org.apache.catalina.startup.Bootstrap");
			java.lang.reflect.Method method = null;
			Class[] argsClass = new Class[] { String[].class };
			// get the main method for the org.apache.tomcat.shell.Startup class
			method = aClass.getMethod("main", argsClass);
			Object object = null;
			String filePath= "-f conf/server.xml";
			Object[] arguments = new Object[] { new String[] {"start"}};
			// now invoke the main method for the org.apache.tomcat.shell.Startup class
			method.invoke(object, arguments);
		}catch(Exception ex){
			System.err.println("Ugh ! is all that I can say");
			ex.printStackTrace(System.err);
		}
	}
}


------ end code -----------

And here's the stack Trace that I get.

---- begin stack trace dump ---
ClassName org.apache.catalina.startup.Bootstrap
ClassLoader java.net.URLClassLoader
Starting service Tomcat-Standalone
Apache Tomcat/4.0.1
Exception during startup processing
java.lang.reflect.InvocationTargetException: java.lang.NoClassDefFoundError:
org
/apache/catalina/loader/Reloader
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at
org.apache.catalina.loader.StandardClassLoader.findClass(StandardClas
sLoader.java:671)
        at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClas
sLoader.java:1090)
        at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClas
sLoader.java:989)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at
org.apache.catalina.core.StandardContext.start(StandardContext.java:3
313)
        at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

        at org.apache.catalina.core.StandardHost.start(StandardHost.java:612)
        at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

        at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:307
)
        at
org.apache.catalina.core.StandardService.start(StandardService.java:3
88)
        at
org.apache.catalina.core.StandardServer.start(StandardServer.java:505
)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:776)
        at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)
        at org.apache.catalina.startup.Catalina.process(Catalina.java:179)
        at java.lang.reflect.Method.invoke(Native Method)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)
        at java.lang.reflect.Method.invoke(Native Method)
        at TCStart.main(TCStart.java:25)

---- end stack trace dump --------



__________________________________________________
Do You Yahoo!?
Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
http://geocities.yahoo.com/ps/info1

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>

-------- End of forwarded message --------




_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>

-------- End of forwarded message --------




_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>