Problema de carga dinámica cuando el programa se ejecuta desde un jar
-
05-07-2019 - |
Pregunta
Tengo una aplicación que se puede ampliar a través de clases de Java que se ajustan a una interfaz determinada. Si ejecuto el programa desde las clases de línea de comandos, puedo crear instancias de las clases de complementos usando:
Class.forName("myAddon").newInstance();
Sin embargo, si ejecuto la aplicación (configurando la clase principal correctamente), obtengo una excepción de clase no encontrada. ¿Alguien puede arrojar algo de luz sobre lo que está pasando aquí?
TIA, Adam
Solución
He logrado que esto funcione utilizando un URLClassLoader, especificando la ruta de búsqueda para que sea el directorio actual de la siguiente manera:
URLClassLoader cl = new URLClassLoader(new URL[] {new File(".").toURI().toURL()});
Gracias por toda su ayuda,
Adam
Otros consejos
La clase que estás buscando no está en el classpath. Si está en un directorio
es decir MyClass.class MyJar.jar
Debe hacer:
java -classpath . -jar MyJar.jar
Pero realmente necesitamos más información para responder la pregunta. ¿Cuál es la clase principal establecida en el manifiesto jar? ¿Cuál es tu classpath? ¿Cómo se especifica qué clase cargar?