TLD's are not processed if the webapp is in a folder that has a space in it. Myspaces is failing using Tomcat 5.5 because its listener was not being invoked. I traced the problem with the debugger and found the problem. JAR files in the WEB-INF/lib folder were supposed to be scanned for TLD's. The method getJarPaths in startup/TldConfig.java[1] is supposed to return all the JAR files that have a TLD within them. This method is not working correctly. The problem is with how the path to the JAR files is locoated. First all the classpath entries for the webapp are converted to URL's. URL[] urls = ((URLClassLoader) loader).getURLs(); Then to test to see the file exists a java.io.File is used File file = new File(urls[i].getFile()); try { file = file.getCanonicalFile(); } catch (IOException e) { // Ignore } if (!file.exists()) { // file.exists() RETURNING FALSE continue; } The problem is to do with converting spaces. The paths on my web app all looked something like "file:///c:/Documents%20%and%20Settings/foo/bar". The File class does not understand the %20 as a space. A hack would be to add a .replaceAll("%20", " ") but i'm sure this will cause problems somewhere. And is %20 valid in a File URI? [1] http://svn.apache.org/repos/asf/tomcat/container/tc5.5.x/catalina/src/share/org/ apache/catalina/startup/TldConfig.java
Fixed in svn and will be included in 5.5.24 onwards.