Comment charger des classes qui ne sont pas dans votre chemin de classe

Comment charger des classes qui ne sont pas dans votre chemin de classe

Dans certains scénarios, vous devrez peut-être charger certaines classes qui ne se trouvent pas dans votre chemin de classe.

Exemple Java

Supposons que le dossier «c:\other_classes\» ne se trouve pas dans le chemin de classe de votre projet, voici un exemple pour montrer comment charger une classe Java à partir de ce dossier. Le code et les commentaires sont explicites.

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

Sortie

/c:/other_classes/

Vous remarquerez que cette classe est chargée à partir de «/c:/other_classes/», qui n'est pas dans le chemin de classe de votre projet.