Chargez le fichier de classe indiqué par Path.
ClassLoaderFromPath.java
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
public class ClassLoaderFromPath extends ClassLoader{
private final ClassLoader parent;
public ClassLoaderFromPath(ClassLoader parent) {
super(parent);
this.parent = parent;
}
public Class loadClassFile(Path path) throws IOException{
byte[] data = Files.readAllBytes(path);
return defineClass(null,data,0,data.length);
}
}
2017/01/14-20:35
Correction car l'initialiseur statique n'est pas appelé s'il est laissé comme ci-dessus
ClassLoaderFromPath.java
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
public class ClassLoaderFromPath extends ClassLoader{
private final ClassLoader parent;
public ClassLoaderFromPath(ClassLoader parent) {
super(parent);
this.parent = parent;
}
public Class loadClassFile(Path path) throws IOException,ClassNotFoundException{
byte[] data = Files.readAllBytes(path);
return Class.forName(defineClass(null,data,0,data.length).getName());
}
}