Java - instanciar todas las clases de un directorio

 
Vista:

instanciar todas las clases de un directorio

Publicado por Guillermo (1 intervención) el 20/10/2008 12:10:37
Hola, me estoy vlviedno loco buscando y no hallo la manera de hacer lo siguiente:
Quiero instanciar todas las clses de un directorio determinado.

Es decir por ejemplo, si en un directorio tengo 3 clases: User.java, Product.java y Bill.java, quiero hacer:
User u=new User();
................
................

Pero claro que haga esto automáticamente para todas las clases del directorio y que yo no sepa las clases que hay.

He probado el método forName de Class y nada de nada.
Ayuda plis!!
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:instanciar todas las clases de un directorio

Publicado por Gerardo Aquino (62 intervenciones) el 21/10/2008 06:29:13
Claro que el llamado de Class.forName() funciona, quizas cometas un error básico, mira las carpetas en las que ordenas las clases en java no son carpetas, mas bien es nivel del paquete que andas trabajando

ejemplo, para definir escuela/materias/matematicas, en java es: escuela.materias.matematicas, cuando haces una intsancia de una clase debes tomar el codeBase como referencia y de ahi partir, quizas el problema esta en que quieres otra carpeta diferente al codeBase y lamento informarte que la unica manera de hacerlo es registrar ese directorio como variable global en el sistema ó guardando las clases dentro de la carpeta $JAVA_HOME/JRE/LIB/EXT ahi se almacenan todas las extenciones normalmente en formato jar, la ventaja es que podrias hacerle un llamado desde cualquier lugar de tu ordenador

Ahora bien, para llamar una clase por nombre lo que hay que hacer es primero obtener un listado de todas las clases no?? lo primero que te recomiendo es que uses el metodo list de java.io.File para obtener los archivos.class de una carpeta (para ello puedes usar FileFilter ) una ves que tienes los nombres de las clases sin extenciones haces el llamado y listo, pero repito que debe ser desde una carpeta donde java pueda ubicar esa clase

no olvides compilar las clases indicando el paquete al cual corresponden, estos paquetes generan automaticamente sus carpetas

bueno pero hay un problema que te dejo de tarea, como obtener las clases desde un JAR sin decompilar el jar


por cierto, quizas te encuentres con otro problemita a la ora de saber a que paquete corresponde una clase, pero al principio te explique como funcionan las carpetas en java cuando son compiladas con paquetes, solo es cambiar / por . y tan tan

espero te sirva, si no resuelves lo de los Jar me echas un gritoo
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