Bonjour, j'ai le code suivant pour lister les .jar dans un répertoire et voir pour chaque class les interfaces...
Dans le répertoire plugins, je met un fichier .jar ( sans le .project et .classpath ). Pourtant dans mon .jar j'ai bien un fichier .class qui est le suivant :
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 public void loadPlugins() throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException { File directory = new File("./plugins"); if (directory.exists()) { if (directory.isDirectory()) { for (File file : directory.listFiles()) { URLClassLoader loader = new URLClassLoader(new URL[] { file .toURL() }); JarFile jarFile = new JarFile(file.getAbsolutePath()); Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { String name = entries.nextElement().toString(); if (name.length() > 6 && name.endsWith(".class")) { name = name.substring(0, name.length() - 6); name = name.replaceAll("/", "."); Class tmpClass = Class.forName(name, true, loader); System.out.println(tmpClass); for (Class interfaces : tmpClass.getInterfaces()) { System.out.println("\t\t" + interfaces.getName()); } } } } } else { directory.mkdir(); } } else { directory.mkdir(); } }
D'ou viens le problème ?
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 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main implements ActionListener { public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } }
[EDIT]
je viens de trouve le problème mais j'aimerais comprendre pourquoi ?
En effet dans mon programme il y as déjà un fichier qui s'appel Main. Si le fichier principal de mon plugins à un autre nom ( Main -> TEST ) alors il n'y as plus de problème... Comment faire pour ne plus l'avoir ?
merci
Partager