Añadir un JAR a nuestro ClassLoader dinámicamente

Para agregar nuevas rutas estáticas al classpath podemos:

· Agregar la opción –cp seguido de las librerías que deseamos incluir (separadas por “;”) al ejecutar el comando java:

>java -cp unJar.jar;otroJar.jar;unDirectorio/ claseInicial

· Incluir el nombre de las librerías en el manifiesto del archivo (MANIFEST.MF) bajo la propiedad “Class-Path”, separando cada clase por espacio:

>Class-Path: unJar.jar otroJar.jar unDirectorio/

Pero si queremos agregar nuevas rutas en tiempo de ejecución debemos usar el ClassLoader:

URLClassLoader classLoader = ((URLClassLoader) ClassLoader.getSystemClassLoader());

Method metodoAdd = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] { URL.class });

metodoAdd.setAccessible(true);

// La URL del jar que queremos anadir

URL url = new URL("file:///C:/Users/lib/mysql-connector-java-5.1.6.jar");

// Se invoca al metodo addURL pasando esa url del jar

metodoAdd.invoke(classLoader, new Object[] { url });

Un ejemplo completo:

Deja un comentario