Java - Reflexión(Reflection) - Error clase no encontrada

 
Vista:

Reflexión(Reflection) - Error clase no encontrada

Publicado por Dani (6 intervenciones) el 08/03/2009 13:45:44
Muy buenas,

Estoy trabajando en un problema que me requiere crear unos archivos en tiempo de ejecución, compilarlos e instanciarlos. Para ello uso Reflection. (-enlace en Inglés- http://java.sun.com/developer/technicalArticles/ALT/Reflection/index.html)

Es decir, ejecuto un programa principal, durante el cual:
1.- Creo 3 ficheros: botTest0.java, botTest1.java ,botTest2.java (con código correcto)
2.- Se compilan en tiempo de ejecución (com.sun.tools.javac.Main.compile)
3.- A partir de los .class generados se pueden crear objetos ( mediante newInstance() gracias a Reflexión )
4.- Por último se eliminan los .java y .class de los puntos anteriores, para volver al punto 1

El código para la reflexión, el punto 3, es éste:
for (i=0;i<3;i++){
System.out.println("Iteración "+i);

//Hacemos el reflect de las clase testbot
try {
Class c = Class.forName("botTest"+i);
bot = (Agent)(c.newInstance());
} catch (Exception e) {
System.out.println("error cargando la clase "+e);
}
//fin the reflect
}

El problema es que da un error de "java.lang.ClassNotFoundException: botTest0" cuando intenta la línea "Class c = Class.forName("botTest"+i);"

La verdad es que he intentado muchísimas cosas, hasta intentar cambiar el classpath dinámicamente...

Sólo funciona si, al ejecutar el proyecto, los .java y .class de los archivos botTest que quiero probar, ya están en su carpeta correspondiente, pero, por contra, si empiezo la ejecución con esas carpetas vacias, rellenandolas en tiempo de ejecución (como necesito), me salta con el error de clase no encontrada. Esto puede parecer lógico, pero yo suponía que mediante Reflexión esto no debía suceder.

Motivos por los que sucede un error de clase no encontrada (según - enlace en Inglés- http://mindprod.com/jgloss/compileerrormessages.html#CLASSNOTFOUND )

1* You are using Internet Explorer which has a defective or missing Java.
2* Some other syntax error ahead of the class declaration is preventing the compiler from seeing the class declaration.
3* The class is not in the proper file in the proper directory.
4* The class is not public.
5* The class does not have the correct case, either in the class name or the file name.
6* The corresponding class or java file is not on the CLASSPATH (considering the package name.)

Yo juraría que cumplo todos los pasos (aquellos que van con lo mio claro, nada de Internet Explorer), pero es evidentemente que no :-D

¿alguna idea? ¿pista?

Muchísimas gracias.

Dani.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Reflexión(Reflection) - Error clase no encontra

Publicado por JUAN (1 intervención) el 15/01/2010 15:26:19
TAS JODIDO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reflexión(Reflection) - Error clase no encontra

Publicado por Dani (6 intervenciones) el 15/01/2010 17:48:54
jajaja, gracias!
XD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar