Scanning JAR files in WEB-INF/lib for TLDs does not work if there is no "temp" directory in CATALINA_BASE. Especially using a CATALINA_BASE different from CATALINA_HOME is tricky: You have to create "temp" there first. IMHO Tomcat should create "temp" automatically if it does not already exist! This issue exists in both Tomcat 4.1.8 and 4.0.4. In Tomcat 4.1.8 with JSTL, the context does not load because of the following exception: 2002-08-06 07:33:10 ContextConfig[] Exception processing JAR at resource path /WEB-INF/lib/jstl.jar javax.servlet.ServletException: Exception processing JAR at resource path /WEB- INF/lib/jstl.jar at org.apache.catalina.startup.ContextConfig.tldScanJar (ContextConfig.java:930) at org.apache.catalina.startup.ContextConfig.tldScan (ContextConfig.java:868) at org.apache.catalina.startup.ContextConfig.start (ContextConfig.java:647) at org.apache.catalina.startup.ContextConfig.lifecycleEvent (ContextConfig.java:243) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:166) at org.apache.catalina.core.StandardContext.start (StandardContext.java:3445) 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:497) at org.apache.catalina.core.StandardServer.start (StandardServer.java:2188) 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 (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203) ----- Root Cause ----- java.io.IOException: Das System kann den angegebenen Pfad nicht finden at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.checkAndCreate(File.java:1294) at java.io.File.createTempFile(File.java:1382) at java.io.File.createTempFile(File.java:1419) at sun.net.www.protocol.jar.URLJarFile$1.run(URLJarFile.java:169) at java.security.AccessController.doPrivileged(Native Method) at sun.net.www.protocol.jar.URLJarFile.retrieve(URLJarFile.java:164) at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:42) at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:78) at sun.net.www.protocol.jar.JarURLConnection.connect (JarURLConnection.java:85) at sun.net.www.protocol.jar.JarURLConnection.getJarFile (JarURLConnection.java:69) at org.apache.catalina.startup.ContextConfig.tldScanJar (ContextConfig.java:906) at org.apache.catalina.startup.ContextConfig.tldScan (ContextConfig.java:868) at org.apache.catalina.startup.ContextConfig.start (ContextConfig.java:647) at org.apache.catalina.startup.ContextConfig.lifecycleEvent (ContextConfig.java:243) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:166) at org.apache.catalina.core.StandardContext.start (StandardContext.java:3445) 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:497) at org.apache.catalina.core.StandardServer.start (StandardServer.java:2188) 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 (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203) Note: The German "Das System kann den angegebenen Pfad nicht finden" means "The system cannot find the specified path". In Tomcat 4.0.4 with JSTL, the context processes but nevertheless does not load the TLDs. Instead, it throws the following exception at page access time: org.apache.jasper.JasperException: This absolute uri (http://java.sun.com/jstl/core) cannot be resolved in either web.xml or the jar files deployed with this application at org.apache.jasper.compiler.TagLibraryInfoImpl.<init> (TagLibraryInfoImpl.java:194) at org.apache.jasper.compiler.TagLibraryInfoImpl.<init> (TagLibraryInfoImpl.java:174) at org.apache.jasper.compiler.JspParseEventListener.processTaglibDirective (JspParseEventListener.java:1170) at org.apache.jasper.compiler.JspParseEventListener.handleDirective (JspParseEventListener.java:765) at org.apache.jasper.compiler.DelegatingListener.handleDirective (DelegatingListener.java:125) at org.apache.jasper.compiler.Parser$Directive.accept(Parser.java:255) at org.apache.jasper.compiler.Parser.parse(Parser.java:1145) at org.apache.jasper.compiler.Parser.parse(Parser.java:1103) at org.apache.jasper.compiler.Parser.parse(Parser.java:1099) at org.apache.jasper.compiler.ParserController.parse (ParserController.java:214) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:210) at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:548) at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary (JspServlet.java:176) at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service (JspServlet.java:188) at org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:381) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473) 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:243) at org.apache.catalina.core.StandardPipeline.invokeNext (StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:190) at org.apache.catalina.core.StandardPipeline.invokeNext (StandardPipeline.java:566) at org.apache.catalina.valves.CertificatesValve.invoke (CertificatesValve.java:246) at org.apache.catalina.core.StandardPipeline.invokeNext (StandardPipeline.java:564) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.core.StandardContext.invoke (StandardContext.java:2347) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline.invokeNext (StandardPipeline.java:566) at org.apache.catalina.valves.ErrorDispatcherValve.invoke (ErrorDispatcherValve.java:170) at org.apache.catalina.core.StandardPipeline.invokeNext (StandardPipeline.java:564) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:170) at org.apache.catalina.core.StandardPipeline.invokeNext (StandardPipeline.java:564) at org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:468) at org.apache.catalina.core.StandardPipeline.invokeNext (StandardPipeline.java:564) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline.invokeNext (StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.connector.http.HttpProcessor.process (HttpProcessor.java:1027) at org.apache.catalina.connector.http.HttpProcessor.run (HttpProcessor.java:1125) at java.lang.Thread.run(Thread.java:536)
The default installation works fine.
*** Bug 12474 has been marked as a duplicate of this bug. ***
*** This bug has been marked as a duplicate of 9591 ***