So laden Sie Klassen, die sich nicht in Ihrem Klassenpfad befinden

So laden Sie Klassen, die sich nicht in Ihrem Klassenpfad befinden

In bestimmten Szenarien müssen Sie möglicherweise einige Klassen laden, die sich nicht in Ihrem Klassenpfad befinden.

Java-Beispiel

Angenommen, der Ordner "c:\other_classes\" befindet sich nicht in Ihrem Projektklassenpfad. In diesem Beispiel wird gezeigt, wie eine Java-Klasse aus diesem Ordner geladen wird. Der Code und die Kommentare sind selbsterklärend.

import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.security.CodeSource;
import java.security.ProtectionDomain;

public class App{

    public static void main(String[] args) {

    try{

        File file = new File("c:\\other_classes\\");

                //convert the file to URL format
        URL url = file.toURI().toURL();
        URL[] urls = new URL[]{url};

                //load this folder into Class loader
        ClassLoader cl = new URLClassLoader(urls);

                //load the Address class in 'c:\\other_classes\\'
        Class  cls = cl.loadClass("com.example.io.Address");

                //print the location from where this class was loaded
        ProtectionDomain pDomain = cls.getProtectionDomain();
        CodeSource cSource = pDomain.getCodeSource();
        URL urlfrom = cSource.getLocation();
        System.out.println(urlfrom.getFile());

    }catch(Exception ex){
        ex.printStackTrace();
    }
  }
}

Ausgabe

/c:/other_classes/

Sie werden feststellen, dass diese Klasse aus „/c:/other_classes/“ geladen wird, das sich nicht in Ihrem Projektklassenpfad befindet.