Méthode pour charger dynamiquement les fichiers de classe java
Quel serait un bon moyen de charger dynamiquement les fichiers de classe java afin qu'un programme compilé dans un jar puisse lire tous les fichiers de classe dans un répertoire et les utiliser, et comment écrire les fichiers pour qu'ils aient le nom de paquet nécessaire par rapport au jar?
37
demandé sur
MirroredFate
2011-06-03 00:13:15
3 réponses
Je crois que c'est un ClassLoader
que vous recherchez.
Je vous suggère de commencer par regarder l'exemple ci-dessous qui charge les fichiers de classe qui ne sont pas sur le chemin de la classe.
// Create a File object on the root of the directory containing the class file
File file = new File("c:\\myclasses\\");
try {
// Convert File to a URL
URL url = file.toURL(); // file:/c:/myclasses/
URL[] urls = new URL[]{url};
// Create a new class loader with the directory
ClassLoader cl = new URLClassLoader(urls);
// Load in the class; MyClass.class should be located in
// the directory file:/c:/myclasses/com/mycompany
Class cls = cl.loadClass("com.mycompany.MyClass");
} catch (MalformedURLException e) {
} catch (ClassNotFoundException e) {
}
77
répondu
aioobe
2016-08-25 07:00:18
MyClass obj = (MyClass) ClassLoader.getSystemClassLoader().loadClass("test.MyClass").newInstance();
obj.testmethod();
Ou
MyClass obj = (MyClass) Class.forName("test.MyClass").newInstance();
obj.testmethod();
8
répondu
d2k2
2012-07-18 12:20:58
Si vous ajoutez un répertoire à votre chemin de classe, vous pouvez ajouter des classes après le démarrage de l'application et ces classes peuvent être chargées dès qu'elles ont été écrites dans le répertoire.
1
répondu
Peter Lawrey
2011-06-02 20:24:05