Bonjour,
Dans mon programme, je charge des class dynamiquement (des classes qui ne sont pas dans le classpath)
Je les ais rassemblées dans un ArrayList.
Cependant je n'arrive pas à supprimer l'une d'elle. En effet, la class est utiliser donc le fichier ne peux être supprimer.
J'ai essayer de supprimer la ligne de ma class dans mon ArrayList puis de faire un garbage collector, mais c'est ça ne veux toujours pas la supprimer.
Quelqu'un as une idée de comment faire pour supprimer une class chargée dynamiquement ?
PS : j'ai suivit ce tuto pour charger mes class : http://vincentlaine.developpez.com/t.../java/plugins/
Voici le code du chargement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 URLClassLoader loader; String tmp; Class tmpClass; File path=new File(USER_DIR+"scripts/"); File[] children = path.listFiles(); //Pour chaque fichier du repertoire des scripts for(int j=0;j<children.length;j++){ //Si c'est un fichier jar if(children[j].toString().endsWith(".jar")){ try{ //On créer un nouveau URLClassLoader pour charger le jar qui se trouve ne dehors du CLASSPATH loader = new URLClassLoader(new URL[] {children[j].toURI().toURL()}); //On charge le jar en mémoire JarFile jar = new JarFile(children[j].getAbsolutePath()); Enumeration e = jar.entries(); //Pour chaque fichier du jar while(e.hasMoreElements()){ tmp = e.nextElement().toString(); //On vérifie que le fichier courant est un Main.class if(tmp.endsWith("Main.class")) { tmp = tmp.substring(0,tmp.length()-6); tmp = tmp.replaceAll("/","."); tmpClass = Class.forName(tmp ,true,loader); myArrayList.add((MyInterface)tmpClass.newInstance()); } } }catch(Exception ex){ex.printStackTrace();} } }
J'ai essayé ça :
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 myArrayList.remove(k); Runtime r = Runtime.getRuntime(); r.gc(); File myFile=new File(gui_accueil.DTEK_USER_DIR+"scripts/"+name); myFile.delete()
Partager