Hi, we now get this exception:
java.lang.StringIndexOutOfBoundsException: String index out of range: 3 at java.lang.String.charAt(String.java:658) at org.apache.catalina.loader.WebappClassLoaderBase.filter(WebappClassLoaderBase.java:2780) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253) at java.lang.ClassLoader.loadClass(ClassLoader.java:411) at java.lang.ClassLoader.loadClass(ClassLoader.java:411) at java.lang.ClassLoader.loadClass(ClassLoader.java:411) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.mozilla.javascript.Kit.classOrNull(Kit.java:89) at org.mozilla.javascript.NativeJavaPackage.getPkgProperty(NativeJavaPackage.java:154) at org.mozilla.javascript.NativeJavaPackage.get(NativeJavaPackage.java:111) at org.mozilla.javascript.NativeJavaTopPackage.init(NativeJavaTopPackage.java:119) that is because WebappClassLoaderBase.filter() is really changed in this release and assumes: } else if (name.startsWith("org")) { /* 3 == length("org") */ ch = name.charAt(3); that when it gets "org" it can get the 4 the (position 3) char That bombs out now This is because NativeJavaPackage tries to load anything that it gets through its get method so it does try "org" until it sees somethign that is a class. (so org.xxx then org.xxx.Yyy will be seen as a class) I guess that code could be written with a simple length check in that if above or write it a bit different and have something like: } else if (isClassName && name.startsWith("org.apache.")) { /* 11 == length("org.apache.") */ if (name.startsWith("tomcat.jdbc.", 11)) { return false; } if (name.startsWith("el.", 11) || name.startsWith("catalina.", 11) || name.startsWith("jasper.", 11) || name.startsWith("juli.", 11) || name.startsWith("tomcat.", 11) || name.startsWith("naming.", 11) || name.startsWith("coyote.", 11)) { return true; } } else if (!isClassName && name.startsWith("org/apache/")) { /* 11 == length("org/apache/") */ if (name.startsWith("tomcat/jdbc/", 11)) { return false; } if (name.startsWith("el/", 11) || name.startsWith("catalina/", 11) || name.startsWith("jasper/", 11) || name.startsWith("juli/", 11) || name.startsWith("tomcat/", 11) || name.startsWith("naming/", 11) || name.startsWith("coyote/", 11)) { return true; } } *that seems a bit shorter and should do the same.* -- Johan Compagner Servoy