TD3 - Chargement dynamique

De $1

Table des matières
  1. 1. MyClassLoader

Version de 19:12, 18 Avr 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Ce TP a pour objectif d'étudier les mécanismes de chargement dynamique en Java et en particulier le fonctionnement de la classe ClassLoader.

MyClassLoader

On veut créer son propre ClassLoader qui cherche les classes à charger dans une liste de répertoires ou de ressources compressées (jar, zip). Pour cela vous devez créer une classe MyClassLoader qui spécialisera (la classe SecureClassLoader. et surchargera la méthode loadClass. On pourra par exemple compléter le code donné ci-dessous:

package miage.m1.dynamicLoading; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.security.SecureClassLoader; import java.util.ArrayList; import java.util.jar.JarFile; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class MyClassLoader extends SecureClassLoader { private ArrayList<File> path = new ArrayList<File>(); public MyClassLoader(File classPath) { super(); addPath(classPath); } public void addPath(File classPath) { if (!classPath.exists()) throw new IllegalArgumentException(classPath+" does not exist!"); this.path.add(classPath); } @Override protected Class<?> findClass(String name) throws ClassNotFoundException { byte[] b = loadClassData(name); return super.defineClass(name, b, 0, b.length); } private byte[] loadClassData(String name) throws ClassNotFoundException { ... } }