Modification dynamique du chemin de classe avec ajout de fichier d'exécution
L'ajout d'un fichier au chemin de classe Java pendant l'exécution peut être une technique de débogage ou de déploiement utile. Que le fichier cible soit un fichier jar ou non, la possibilité d'échanger des fichiers existants avec des versions modifiées peut grandement améliorer la flexibilité.
Pour répondre à cette requête, il est important de noter que le chemin de classe Java se compose généralement de répertoires ou de fichiers jar. fichiers. Pour les fichiers de classe individuels, ils doivent être placés dans des structures de dossiers appropriées.
Modification du chemin de classe d'exécution avec un hack
Si vous devez spécifiquement ajouter un seul fichier de classe, une solution de contournement existe :
<code class="java">import java.io.IOException; import java.io.File; import java.net.URLClassLoader; import java.net.URL; import java.lang.reflect.Method; public class ClassPathHacker { private static final Class[] parameters = new Class[]{URL.class}; public static void addFile(String s) throws IOException { File f = new File(s); addFile(f); }//end method public static void addFile(File f) throws IOException { addURL(f.toURL()); }//end method public static void addURL(URL u) throws IOException { URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class sysclass = URLClassLoader.class; try { Method method = sysclass.getDeclaredMethod("addURL", parameters); method.setAccessible(true); method.invoke(sysloader, new Object[]{u}); } catch (Throwable t) { t.printStackTrace(); throw new IOException("Error, could not add URL to system classloader"); }//end try catch }//end method }//end class</code>
Cette solution de contournement vous permet d'ajouter un fichier au chargeur de classe système en appelant une méthode protégée à l'aide de la réflexion. Cependant, cette approche peut ne pas être applicable dans les environnements avec SecurityManagers.
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!