Reflection

Dae galera!! Tava tentando fazer um exemplo usando Reflection, mas tá dando o seguinte erro:

java.lang.ClassNotFoundException: ClasseDois at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at feflection.CriaObjeto.criaObjeto(CriaObjeto.java:13) at feflection.CriaObjeto.main(CriaObjeto.java:28)

As classes:

[code]import java.lang.reflect.*;

public class CriaObjeto {

public void criaObjeto( String strClasse, String strMetodo ) throws Exception {
	
	Class parametros[] = new Class[ 2 ];
	parametros[ 0 ] = Integer.TYPE;
    parametros[ 1 ] = Integer.TYPE;		           
	
	Class cls = Class.forName(strClasse);
	Method meth = cls.getMethod(strMetodo, parametros );
	
	Object argumentos[] = new Object[ 2 ];
	argumentos[ 0 ] = new Integer( 50 );
	argumentos[ 1 ] = new Integer( 20 );
	
	Object result = meth.invoke( this, argumentos );
	
}

public static void main(String[] args) {
	CriaObjeto objeto = new CriaObjeto();
	
		try {
			objeto.criaObjeto( "ClasseDois", "soma" );
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}[/code]

[code]import javax.swing.JOptionPane;

public class ClasseUm {

public void imprime( String valor ) {
	JOptionPane.showMessageDialog( null, valor  );
}

}[/code]

[code]public class ClasseDois extends ClasseUm {

public void soma( int um, int dois ) {
	int total =  um + dois;
	this.imprime( "Total: " + total );
}

}[/code]

Alguém sabe o que pode ser?
Valeu e fiquem com Deus!!!

Primeira coisa, tente colocar as classes dentro de um pacote e veja se elas estão realmente acessíveis no classpath.

Segundo, você está invocando um metodo da classe “ClasseDois” em um objeto da classe “CriaObjeto”, veja:

this é um objeto da classe CriaObjeto, e você está tentando chamar um metodo obtido da classe passada como parâmetro, você precisa de um objeto da classe “ClasseDois” para chamar esse método.

Ex.:

[code]String str = "com.jairelton.Classe2";

Class clazz = Class.forName(str);

Method method = clazz.getMethod("soma", new Class[]{Integer.TYPE, Integer.TYPE});
Object obj = clazz.newInstance();
Object result = method.invoke(obj, new Object[]{new Integer(50), new Integer(20)});
System.out.println(result);[/code]

Valeu JairElton, deu certo!!!
Fique com Deus!!!