Cet extrait de code me permet d'exécuter un pot dans le cadre de mon programme:Réflexion Java. Exécuter un pot externe et se référant à ses classes?
File f = new File("client.jar");
URLClassLoader cl = new URLClassLoader(new URL[]{f.toURI().toURL(), null});
Class<?> clazz = cl.loadClass("epicurus.Client");
Method main = clazz.getMethod("main", String[].class);
main.invoke(null, new Object[]{new String[]{}});
Y at-il de toute façon que je peux faire référence aux cours de ce programme externe?
Je veux pouvoir changer le titre de son JFrame par exemple.
L'attribut title est sur ** instances ** de JFrame, pas la classe. Alors que vous pouvez inspecter des classes avec la réflexion, vous ne pouvez pas manipuler des instances. –
@SteveH. - Hein? Bien sûr, vous pouvez ... c'est un peu le point de réflexion. 'Field.set (objInstance, fieldValue)' ... là vous allez, j'ai juste manipulé une instance. –
@BrianRoach vous avez raison - peut-être devrais-je dire que vous ne pouvez pas "obtenir" des instances. Comment sauriez-vous qu'un nouveau JFrame a été créé et où obtiendriez-vous la référence? Mon hypothèse est que le fichier jar est inconnu –