tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wildeboer, Tonnis" <twild...@Covad.COM>
Subject RE: Class Loader Problem?
Date Fri, 11 May 2001 21:52:48 GMT
Ted,

Thanks for your reply. My responses below...

--Tonnis

> -----Original Message-----
> From: Ted Neward [mailto:tneward@javageeks.com]
> Sent: Friday, May 11, 2001 1:35 PM
> To: tomcat-dev@jakarta.apache.org
> Subject: RE: Class Loader Problem?
> 
> 
> 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.

I rebuilt the class, modified and rebuilt the class, renamed the class,
removed the class, searched everywhere I could think of for VCALookup*
including the Tomcat and related jar files and could not find anything
anywhere except my WEB-INF/classes directory. (Which was a symbolic link to
the real classes directory, if that's any clue.)

> 
> 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.)
> 

Yes, I figured that. That's the reason I did it, to try to get some other
Exception besides the "Truncated class file". When I did that and STILL got
the same Exception, that's when I realized I'd better create a whole new
checkout. (And yes, I did restart Tomcat each time, eventhough I had the
reaload option set to false.)

> 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