Sorry it's taken me a week to get back to you on this. Class-reloading is
not working in the latest nightly build. I know why, but don't know what the
fix is.
The problem is in StandardClassLoader::loadClass. This method checks that
the class exists, if it does it wants to add it to the classCache HashMap.
To do this loadCLass has a loop that loops around all the 'repositories'
These repositories are the .jar files in the web-inf lib directory. In the
loop it does this
classCache.put(name, new ClassCacheEntry
(clazz, classUrl,
classUrlConnection.getLastModified()));
but the loop never breaks, so if you have 4 jars in your lib directory code
loops 5 times (once for the classes sub dir and once for each jar) and the
'last' jar in wins. So the classes in my classes directory get added as
"jar:jndi:/localhost/AddressBook/WEB-INF/lib/xerces.jar!/com/develop/ewebjav
a/lab/Browse.class"
The code should check which 'repository' the class is in and only add that
entry to the directory. Of course removing all the jars or putting a break
after the first loop (a brutal but effective solution in my case) fixes the
problem.
Hope this helps,
Kevin Jones
DevelopMentor
www.develop.com