[JAVA] Laden von Klassen aus dem Pfad

Überblick

Laden Sie die durch [Pfad] angegebene Klassendatei (http://docs.oracle.com/javase/jp/7/api/java/nio/file/Path.html).

Code

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

Behoben, weil der statische Initialisierer nicht aufgerufen wird, wenn er wie oben belassen wird

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());
    }
}

Recommended Posts

Laden von Klassen aus dem Pfad
Erstellen Sie einen Pfad aus einem Array
Java, abstrakte Klasse für Anfänger
Wählen Sie eine Klassenhierarchie aus markierten Klassen