Re: dealing with ClassLoaders...
On 8/1/2014 5:10 PM, Andreas Leitgeb wrote:
Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> wrote:
Martin Gregorie <martin@address-in-sig.invalid> wrote:
public class MAClassLoader extends ClassLoader
{
[ no snip ]
}
I hope this is useful info.
On further examination, I think it isn't as simple as that.
Essentially, this "empty" ClassLoader-subclass would pass
everything through to the parent classloader (or the pre-
mordial one, absent a parent) and thus not be associated to
any of the classes loaded through it, thus provide no
isolation at all.
That conclusion may be worth re-examining. Just because
MAClassLoader is a subclass of ClassLoader and uses methods
of the latter to do all its dirty work, it doesn't mean the
classes aren't loaded by MAClassLoader. I'd suggest a quick
experiment: Load a class with MAClassLoader, instantiate an
instance thereof, and see what inst.getClass().getClassLoader()
says.
It must be admitted, though, that ClassLoader is a bit
weird. An abstract class all of whose methods are concrete?
Bizarre ...
FWIW, I have successfully used
private static class Loader extends ClassLoader {
private Class<?> load(byte[] classFile) {
Class<?> clown = defineClass(
null, classFile, 0, classFile.length);
resolveClass(clown);
return clown;
}
}
.... to load many distinct classes with identical package and
class names, which suggests there's at least some degree of
isolation present even though all the actual work is done by
ClassLoader itself.
--
esosman@comcast-dot-net.invalid