Classloader permettant un rechargement à chaud des classes
public class VolatilClassLoader
extends ClassLoader {
@Override
public Class
<?> loadClass
(String name,
boolean resolve
) throws ClassNotFoundException {
System.
out.
println("Resolving " + name
);
File file
= Classpath.
findClass(name
);
byte[] data
= null;
if (file
!= null) {
data
= new byte[(int) file.
length()];
try {
new java.
io.
FileInputStream(file
).
read(data
);
}
catch (java.
io.
IOException e
) {
data
= null;
}
}
if (data
== null)
return super.
loadClass(name, resolve
);
else {
Class klass
= defineClass
(name, data,
0, data.
length);
if (resolve
)
resolveClass
(klass
);
return klass
;
}
}
}
Poster un nouveau commentaire