Duda con Reflection
Hola buenos días:
Hace unos días hice una pregunta a cerca de la carga de clases con classloader y me respondisteis que debería usar reflection.
Pues bien, estoy intentando usar reflectios sin embargo, cuando voy a cargar la clase tengo problemas:
Con el siguiente código no tengo problemas:
//clase que vamos a instanciar
String c = "A_Mano_2";
//Constructor: Es el único q tiene y no tiene parámetros
Class cArgParaConstructor[] = {String.class};
Object oParamParaConstructor[] = {new String("Demo Reflexión")};
//llamamos al método que tiene setEtiqueta(String s)
String nombreMetodo = "setEtiqueta";
Class cArgMetodo[] = {String.class};
Object oParamMetodo[] = {new String("Hola Holita, vecinito")};
//instanciamos la clase
clase = Class.forName(c);
Constructor constructorClaseInstanciada = clase.getConstructor(cArgParaConstructor);
Object obj = constructorClaseInstanciada.newInstance(oParamParaConstructor);
//Object obj = clase.newInstance(); //no le metemos parámetros porq el constructor no tiene parámetros
//invocamos el método
metodo = clase.getMethod(nombreMetodo,cArgMetodo);
metodo.invoke(obj,oParamMetodo);
Sin embargo, si en lugar de poner String c = "A_Mano_2" pongo la ruta completa de la clase
String c = "H:/Documents/cosas_de_java/Ejemplo_Carga_Modulos/build/classes/A_Mano_2"
No me funciona.
Lo que me interesa es poder cargar clases que se encuentren fuera del directorio de la aplicación.
¿A qué puede ser debido?
Muchas gracias.
Hace unos días hice una pregunta a cerca de la carga de clases con classloader y me respondisteis que debería usar reflection.
Pues bien, estoy intentando usar reflectios sin embargo, cuando voy a cargar la clase tengo problemas:
Con el siguiente código no tengo problemas:
//clase que vamos a instanciar
String c = "A_Mano_2";
//Constructor: Es el único q tiene y no tiene parámetros
Class cArgParaConstructor[] = {String.class};
Object oParamParaConstructor[] = {new String("Demo Reflexión")};
//llamamos al método que tiene setEtiqueta(String s)
String nombreMetodo = "setEtiqueta";
Class cArgMetodo[] = {String.class};
Object oParamMetodo[] = {new String("Hola Holita, vecinito")};
//instanciamos la clase
clase = Class.forName(c);
Constructor constructorClaseInstanciada = clase.getConstructor(cArgParaConstructor);
Object obj = constructorClaseInstanciada.newInstance(oParamParaConstructor);
//Object obj = clase.newInstance(); //no le metemos parámetros porq el constructor no tiene parámetros
//invocamos el método
metodo = clase.getMethod(nombreMetodo,cArgMetodo);
metodo.invoke(obj,oParamMetodo);
Sin embargo, si en lugar de poner String c = "A_Mano_2" pongo la ruta completa de la clase
String c = "H:/Documents/cosas_de_java/Ejemplo_Carga_Modulos/build/classes/A_Mano_2"
No me funciona.
Lo que me interesa es poder cargar clases que se encuentren fuera del directorio de la aplicación.
¿A qué puede ser debido?
Muchas gracias.
1 Respuesta
Respuesta de Fernando Rosado Altamirano
1