Pour charger dynamiquement de nouveaux fichiers JAR pendant que votre application est en cours d'exécution, vous pouvez exploiter la classe URLClassLoader :
ClassLoader loader = URLClassLoader.newInstance( new URL[] { yourURL }, getClass().getClassLoader() );
Cela crée un nouveau ClassLoader instance qui inclut l’URL spécifiée. Vous pouvez ensuite utiliser ce chargeur de classe pour charger des classes à partir du fichier JAR :
Class<?> clazz = Class.forName("mypackage.MyClass", true, loader);
Ici, clazz représente la classe que vous avez chargée à partir du fichier JAR.
Recharger des classes existantes pendant que votre application est en cours d'exécution peut être plus délicat, car cela peut introduire des incohérences dans les données. Cependant, si nécessaire, vous pouvez suivre ces étapes :
Constructor<?> ctor = runClass.getConstructor(); Runnable doRun = (Runnable) ctor.newInstance(); doRun.run();
Les chargeurs de classes ne sont plus utilisés une fois que les threads et objets associés ne les référencent plus. Ils peuvent ensuite être récupérés, sauf en cas de fuites de mémoire causées par ThreadLocal, les pilotes JDBC ou des problèmes similaires.
Si vous devez conserver les données associées aux objets existants pendant Lors du rechargement de classe, vous devriez envisager d'utiliser un mécanisme de persistance tel que la sérialisation pour stocker et restaurer les données.
Il est également possible d'ajouter de nouvelles classes dans un chargeur de classes existant en utilisant URLClassLoader.addURL. Cependant, en cas d'échec des tentatives de chargement d'une classe, la classe ne sera jamais chargée dans cette instance de chargeur de classe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!