En este grupo En todos

Foro de Java



API Reflection

Nery
Bachiller en computación universidad d...
Escrito por Nery Chucuy
el 12/05/2007
Buen dia. Necesito ayuda con la implementacoin de esta API.

Estoy trabajando en un proyecto de compiladores, lo que hago es generar codigo java y luego ejecutando desde Java un archivo. Bin compilo dicho codigo, luego trato de sintaciar la clase que se ha generado, del la siguiente manera:

       Class c = ClassforName("Algoritmo");
       c. NewInstance();

Esto l o hago con el fin de 'correr' el programa equivalente el archivo de entrada que el usuario indico. Mi problema es: Aunque la clase Algoritmo esta en el mismo paquete que la clase que se encarga de llamarlo (en donde esta el codigo arriba indicado) siempre me tira la excepcion
 ClassNotFoundException: Algoritmo.

He lidiado mucho con este error pero no consigo arreglarlo. Puede alguien ayudarme o decirme otra forma de hacerlo? De antemano gracias!
Chuidiang Chuidiang
Madrid, España
Escrito por Chuidiang Chuidiang
el 12/05/2007

Hola:

Después de compilar se supone que debes generar un Algoritmo. Class en algún sitio. Cuando arranques tu compilador/ejecutador, debería tener en el CLASSPATH el directorio donde dejes el fichero Algoritmo. Class

Si Algoritmo. Java es de algun paquete, debes entonces generar el Algoritmo. Class dentro de unos directorios que se llamen igual que el paquete.

Se bueno.

Nery Chucuy
Bachiller en computación universidad d...
Escrito por Nery Chucuy
el 12/05/2007
Muchas gracias. Una pregunta mas, te refieres a la configuracion del Classpath de Java? Osea que tendria que cambiarlo momentaneamente o como?
Chuidiang Chuidiang
Madrid, España
Escrito por Chuidiang Chuidiang
el 13/05/2007

Hola:

Con System. GetProperty("java.class.path") obtienes el classpath. Supongo que con System. SetProperty ("java.class.path",.... ) puedes cambiarlo, pero no he probado nunca.

Otra opción es la que te comento. En el classpath de arranque puede haber un directorio vacío. Ahí puedes dejar las clases.

Se bueno.