I just noticed a slight (but important typo). Sorry for the reply to my own message.
It should say "and they are picked up on a reload without having to restart the entire container." rather than what it actually does say. Spellcheckers should be smart enough to know what I mean, even if what I said was legal English. :)
Nathan Rogers wrote:
I am developing an imaging servlet under Tomcat 4.1.12 using JAI 1.1.2. Every time I update my code to add new features, it will return with a NoClassDefFoundError until I restart Tomcat. At that point, it finds the 'missing' class and everything works as expected.
Only the superficial ImageIO classes are directly invoked (ImageReader, ImageWriter, ImageIO) - the NoClassDefFoundErrors are always for implementation specific classes (typically com.sun.media.*). I've verified that the files are in JAR files located under /WEB-INF/lib so they should be picked up by Tomcat on a reload. Are the JAR files not scanned for dependencies on a reload? I've never had this problem with classes that I create - I simply place them in /WEB-INF/classes/<package specific path>/ and they are picked up on a reload with having to restart the entire container.
Here is the last error that I saw - this is typical of what I see when these errors occur
java.lang.NoClassDefFoundError:
com/sun/media/imageioimpl/plugins/jpeg2000/J2KReadState
at
com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReader.readHeader(J2KImageReader.java:285)
at
com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReader.getWidth(J2KImageReader.java:235)
at edu.wisc.library.ltg.digitalCollections.JP2Image.(JP2Image.java:93)
at
edu.wisc.library.ltg.digitalCollections.ImageFactory.createImage(ImageFactory.java:73)
at
edu.wisc.library.ltg.digitalCollections.TestCollectionImpl.getResource(TestCollectionImpl.java:59)
at
edu.wisc.library.ltg.imageServlet.SimpleImageServlet.doGet(SimpleImageServlet.java:177)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:534)
-- Nathan Rogers Library Technology Group 312F Memorial Library 728 State Street 261-1409
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]