We are currently using the digester in a server we build that uses custom classloaders for some containers within it, which load custom apps. We use the Digester in the server itself, and some of the apps being loaded in the containers also want to use the Digester. The problem is that when an app creates a Digester instance, it is created by the parent (system) classloader that loaded the server, since the server had already used the Digester and that classloader knows about it. When the Digester then does a Class.forName in one of its rules to create an object, it knows nothing about the container's ClassLoader and the classes within it. The class is only withing the app, and so can't be found. Is there any downside to changing the Digester to always use: Thread.getCurrentThread.getContextClassLoader.loadClass(name); instead of class.forName(name); The code would no longer work in JDK 1.1, but that is already the case...
