Re: ClassLoader not loading recompiled classes
while (true) {
long lastMod = classFile.lastModified();
if (lastMod > classTimestamp) {
// if classfile is new, load it.
System.out.println("(re)loading MessageGeneratorImpl");
Object o = new URLClassLoader(
new URL[] {new File("../generator").toURL()},
Reloader.class.getClassLoader()).
loadClass("MessageGeneratorImpl").newInstance();
generator = (MessageGenerator)o;
classTimestamp = lastMod;
}
System.out.println("message: " + generator.getMessage());
Thread.currentThread().sleep(10 * 1000);
}
This is functionally identical to the following (which is the test
code that lead me to make the comment about externally compiled
classes):
while(true) {
testClassLoader(); // create a new class loader and load class
System.out.println("hnit any key to reload");
System.in();
}
new timestamps *DO NOT* help.... the only solution I have found is to
read the binary class file and then link it to symbol table with
ClassLoader.defineClass (btw this is the solution JUnit uses)).