You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Paras Mehta <pa...@elitecore.com> on 2003/05/01 06:48:41 UTC
Error loading custom class loader in Tomcat 4.1.12.
i am trying to load my own classloader.
----------------------------------------
in my server.xml, i have put loader entry as:
<Context path="" docBase="D:\E-Learning\Application" debug="10"
reloadable="true" crossContext="true" >
<Loader Reloadable="false" debug="10" loaderClass="com.ElearningLoader" />
</Context>
and one jar file which is containg this classlaoder is put in
<tomcat_home>\common\lib
but when i start my tomcat server it gives me this exception:
Catalina.start: LifecycleException: start: :
java.lang.NoSuchMethodException
LifecycleException: start: : java.lang.NoSuchMethodException
at
org.apache.catalina.loader.WebappLoader.start(WebappLoader.java:678)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:3
456)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at
org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347
)
at
org.apache.catalina.core.StandardService.start(StandardService.java:4
97)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:218
9)
at org.apache.catalina.startup.Catalina.start(Catalina.java:510)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
----- Root Cause -----
java.lang.NoSuchMethodException
at java.lang.Class.getConstructor0(Class.java:1755)
at java.lang.Class.getConstructor(Class.java:990)
at
org.apache.catalina.loader.WebappLoader.createClassLoader(WebappLoade
r.java:781)
at
org.apache.catalina.loader.WebappLoader.start(WebappLoader.java:655)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:3
456)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at
org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347
)
at
org.apache.catalina.core.StandardService.start(StandardService.java:4
97)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:218
9)
at org.apache.catalina.startup.Catalina.start(Catalina.java:510)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
Stopping service Tomcat-Standalone
Catalina.stop: LifecycleException: Coyote connector has not been started
LifecycleException: Coyote connector has not been started
at
org.apache.coyote.tomcat4.CoyoteConnector.stop(CoyoteConnector.java:1
045)
at
org.apache.catalina.core.StandardService.stop(StandardService.java:54
6)
at
org.apache.catalina.core.StandardServer.stop(StandardServer.java:2224
)
at org.apache.catalina.startup.Catalina.start(Catalina.java:541)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
My Class loader code is here:
===========================================================
package com;
import java.io.*;
import java.lang.reflect.*;
public class ElearningLoader extends ClassLoader
{
public ElearningLoader()
{
System.out.println("ElearningLoader Constructor");
}
///////////////////////////////////////////////////////////////////////////
private static String getFileContent(String strFilePath)
{
try
{
System.out.println("ElearningLoader.getFileContent(" + strFilePath + ")");
String strFileContent = null;
FileInputStream in = null;
ByteArrayOutputStream outBuf = null;
try
{
in = new FileInputStream(strFilePath);
outBuf = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int count = in.read(buffer);
while (count > 0)
{
outBuf.write(buffer, 0, count);
count = in.read(buffer);
}
strFileContent = outBuf.toString();
}
finally
{
try
{
if(in != null) in.close();
if(outBuf != null) outBuf.close();
}
catch(Exception e)
{
System.out.println("getFileContent -> Exception while closing FileInputStream, ByteArrayOutputStream ojbects "+ e);
}
}
return strFileContent;
}
catch(Exception e)
{
System.out.println("getFileContent -> Exception "+ e);
r
eturn null;
}
}
///////////////////////////////////////////////////////////////////////////
public Class findClass(String name)
{
Class clsLoaded = null;
byte[] byteBuffer = null;
char[] charBuffer = null;
System.out.println("ElearningLoader.findClass(" + name + ")" );
try
String strEncrypted = getFileContent(name + ".class");
StringReader sr = new StringReader(strEncrypted);
byteBuffer = new byte[strDecrypted.length()];
charBuffer = new char[strDecrypted.length()];
int count = sr.read(charBuffer);
for(int i=0;i<charBuffer.length;i++)
byteBuffer[i] = (byte)charBuffer[i];
clsLoaded = defineClass(name, byteBuffer, 0, count);
}
catch(Exception e)
System.out.println("Exception in findClass method = "+e.getMessage());
e.printStackTrace();
}
return clsLoaded;
}
public static void main(String[] args) throws Throwable
ElearningLoader objElearningLoader = new ElearningLoader();
Class cls = objElearningLoader.findClass(args[0]);
}
}
=====================================================
Please help me resolve this problem.
Paras Mehta.