ClassLoader et rechargement de fichiers

N’avez-vous jamais eu besoin de recharger un fichier placé dans l’un des répertoires apparaissant dans la variable d’environnement CLASSPATH ? Habituellement, ces fichiers sont chargés dans la mémoire de la JVM en utilisant la méthode "getResourceAsStream" de la classe "java.lang.ClassLoader". Or, une fois les fichiers chargés par un ClassLoader, ils restent en mémoire et ne sont plus lus depuis les disques ou le réseau. Pour forcer leur rechargement, il suffit d’instancier un nouveau ClassLoader. Cela se fait en quelques lignes de Java :

public class ResourceLoader { public static InputStream getResourceAsStream(String name) { ClassLoader loader = new URLClassLoader(constructUrls()) { public URL getResource(String name) { return findResource(name); } }; return loader.getResourceAsStream(name); } private static URL[] constructUrls() { String classpath = System.getProperty("java.class.path"); String[] paths = classpath.split(File.pathSeparator); int length = paths.length; URL[] arrayOfUrls = new URL[length]; try { for (int i=0; i<length; i++) arrayOfUrls[i] = new File(paths[i]).toURI().toURL(); } catch (MalformedURLException e) { ... } return arrayOfUrls; } }


Vous avez trouvé cette publication utile? Cliquer sur
Ippon
Ippon est un cabinet de conseil en technologies, créé en 2002 par un sportif de Haut Niveau et un polytechnicien, avec pour ambition de devenir leader sur les solutions Digitales, Cloud et BigData.

Ippon accompagne les entreprises dans le développement et la transformation de leur système d’information avec des applications performantes et des solutions robustes.

Ippon propose une offre de services à 360° pour répondre à l’ensemble des besoins en innovation technologique : Conseil, Design, Développement, Hébergement et Formation.

Nous avons réalisé, en 2016, un chiffre d’affaires de 24 M€ en croissance organique de 20%. Nous sommes aujourd’hui un groupe international riche de plus de 300 consultants répartis en France, aux USA, en Australie et au Maroc.
FRANCE Website LinkedIn