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:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to