tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ted Neward" <tnew...@javageeks.com>
Subject RE: Class Loader Problem?
Date Fri, 11 May 2001 20:35:05 GMT
I think it's fairly safe to postulate what happened--somewhere along the
line, the VALookup.class file was either truncated, copied over, or somehow
"mangled" (through actions that may have had nothing to do with
compilation--maybe some random cosmic ray passed through the case and
flipped a bit on the disk or something) such that the VM couldn't recognize
the .class file as kosher any more.

BTW, one thing you said you did was take a known good .class file (your
servlet) and rename it to VALookup.class to see if that would work--it will
never work. Java has a definite link between the name of the .class file and
the class it contains. (The name is embedded as an attribute inside the
.class file format.)

Usually 99% of all ClassFormatErrors are due to this same kind of "the file
got munged" strangeness--my first inclination on a CFE is to do a complete
rebuild and redeploy. (The other 1% is reserved for guys who are building
.class files by hand. :) )

Ted Neward
{.NET||Java} Instructor, DevelopMentor  (http://www.develop.com)
http://www.javageeks.com/~tneward/index.html

> -----Original Message-----
> From: Wildeboer, Tonnis [mailto:twildebo@Covad.COM]
> Sent: Tuesday, May 08, 2001 5:47 PM
> To: 'tomcat-dev@jakarta.apache.org'
> Subject: RE: Class Loader Problem?
>
>
> Well, I considered all those things and finally, I did the only thing you
> can do when things get this weird:
> I did a completely clean checkout and rebuild of everything and
> of course...
> problem solved. Guess I'll never know what was really happening, but the
> experience (and solution) is a lesson in itself...
>
> Thanks for your reply.
>
> --Tonnis
>
> -----Original Message-----
> From: Bip Thelin [mailto:bip@razorfish.com]
> Sent: Tuesday, May 08, 2001 4:48 PM
> To: tomcat-dev@jakarta.apache.org
> Subject: Re: Class Loader Problem?
>
>
> "Wildeboer, Tonnis" wrote:
> >
> > [...]
> >
> > I have gone so far as completely removing VCALookup.class from
> my classes
> > directory and I still get the same Exception.
> > I also tried instantiating the class from a different file
> (first line of
> my
> > doGet()) and still get the same Exception.
> > I copied a known good class (my servlet class), renamed it to
> > VCALookup.class, same Exception.
>
> Ok, this is what the Javadocs say about java.lang.ClassFormatError.
>
> <snip>
> Thrown when the Java Virtual Machine attempts to read a class file and
> determines that the file is malformed or otherwise cannot be
> interpreted as
> a class file.
> </snip>
>
> I interpret this as that the classloader are _finding_ the class but has
> problems
> loading it.
> What is this file/class? Something you copied from somewhere? Could it be
> that
> you are missing an inline class for VCALookup? i.e.
> VCALookup$<inlineclass>.class
> I would think that there's something wrong with the VCALookup class, if it
> couldn't
> find the file you wou'd have gotten a ClassNotFoundException. Is VCALookup
> refering
> to any other classed that you've missed to bring to your Tomcat env?
>
> > 2001-05-01 04:19:15 - Ctx(  ): Exception in: R(  + /csp + /+cfi/login) -
> > java.lang.ClassFormatError: VCALookup (Truncated
> >  class file)
> >         at java.lang.ClassLoader.defineClass0(Native Method)
> >         at java.lang.ClassLoader.defineClass0(Compiled Code)
> >         at java.lang.ClassLoader.defineClass(Compiled Code)
> >         at java.security.SecureClassLoader.defineClass(Compiled Code)
> >         at java.net.URLClassLoader.defineClass(Compiled Code)
> >         at java.net.URLClassLoader.access$1(Compiled Code)
> >         at java.net.URLClassLoader$1.run(Compiled Code)
> >         at java.security.AccessController.doPrivileged(Native Method)
> >         at java.security.AccessController.doPrivileged(Compiled Code)
> >         at java.net.URLClassLoader.findClass(Compiled Code)
> >         at java.lang.ClassLoader.loadClass(Compiled Code)
> >         at sun.misc.Launcher$AppClassLoader.loadClass(Compiled Code)
> >         at java.lang.ClassLoader.loadClass(Compiled Code)
> >         at
> org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(Compiled
> > Code)
> >         at java.lang.ClassLoader.loadClass(Compiled Code)
> >         at java.lang.ClassLoader.loadClassInternal(Compiled Code)
> >         at MediatorAgent.printTemplateResponse(Compiled Code)
> >         at MediatorAgent.printResponse(MediatorAgent.java:606)
> >         at MainVCAServlet.doGeneral(Compiled Code)
> >         at MainVCAServlet.doGet(MainVCAServlet.java:196)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> >         at
> > org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
> >         at org.apache.tomcat.core.Handler.service(Handler.java:286)
> >         at
> > org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
> >         at
> >
> org.apache.tomcat.core.ContextManager.internalService(ContextManag
> er.java:79
> > 7)
> >         at
> > org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
> >         at
> >
> org.apache.tomcat.service.http.HttpConnectionHandler.processConnec
> tion(HttpC
> > onnectionHandler.java:210)
> >         at
> org.apache.tomcat.service.TcpWorkerThread.runIt(Compiled Code)
> >         at
> org.apache.tomcat.util.ThreadPool$ControlRunnable.run(Compiled
> > Code)
> >         at java.lang.Thread.run(Compiled Code)
>
>
> Sorry I can't help you more.
>
> 	..bip


Mime
View raw message