Bonjour,
J'utilise l'introspection pour instancier des objets dont je connais le nom qu'au runtime.
Lorsque j'exécute mon programme normalement cela fonctionne correctement. J'ai créé un Jar de mon appli, et à l'exécution je n'arrive pas retrouver mes classes.

Voilà le bout de code qui plante, méthode qui liste toutes les classes du package passé en paramètre :
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
 
public static Class[] getClasses(String pckgname)
	throws ClassNotFoundException 
	{
		ArrayList<Class> classes = new ArrayList<Class>();
		// Get a File object for the package
		File directory = null;
		try {
			ClassLoader cld = Thread.currentThread().getContextClassLoader();
 
			if (cld == null) {
				throw new ClassNotFoundException("Impossible de récupérer le class loader.");
			}
			String path = '/' + pckgname.replace('.', '/');// '/' +  racine +  
			URL resource = cld.getResource(path);
			if (resource == null) 
			{
				throw new ClassNotFoundException("Aucune ressource pour " + path);
			}
			directory = new File(resource.getFile());
		} catch (NullPointerException x) {
			throw new ClassNotFoundException(pckgname + " (" + directory + ") n'est pas un package valide");
		}
		System.err.println("Introspection.getClasses nom rep " + directory.getAbsolutePath());
		if (directory.exists()) 
		{
			// Get the list of the files contained in the package
			String[] files = directory.list();
			for (int i = 0; i < files.length; i++) {
				// we are only interested in .class files
				if (files[i].endsWith(".class")) {
					// removes the .class extension
					classes.add(Class.forName(pckgname + '.'
							+ files[i].substring(0, files[i].length() - 6)));
				}
			}
		} else {
			throw new ClassNotFoundException(pckgname + " n'apparait pas comme un package valide.");
		}
		Class[] classesA = new Class[classes.size()];
		classes.toArray(classesA);
		return classesA;
	}
J'ai l'erreur
fr.nompackage n'apparait pas comme un package valide.