Mesmo estando em outro pacote ou não, Class.forName espera o nome completo com o package e tudo.
E as classes não devem estar no default package.
L
Luis_Renato
Opa, valeu por ter respondido. Mas continuo sem conseguir. Poderia dar um exemplo do nome completo do arquivo? Uso o Netbeans e estão no package Teste.
M
Marky.Vasconcelos
Horas…
Se sua classe esta coma declaração “sistema.teste” e o nome da classe é Pessoa.
Voce faz o seguinte:
Class.forName("sistema.teste.Pessoa");
L
Luis_Renato
Opa, valeu mais uma vez cara.
Consegui resolver do jeito que falou.
Agora tenho outra dúvida, estou tentando acessar um método dessa classe e não consigo. Procurei em vários tópicos e já tentei todas formas.
Como pode observar eu tenho que passar 3 variáveis inteiras para o método. Porém ele acusa que a classe não foi instanciada:
java.lang.IllegalArgumentException: object is not an instance of declaring class
Poderia me ajudar em mais essa? Valeu.
F
Felagund
A classe não é uma instancia, para executar algum metodo de uma classe vc precisa de uma instancia dela a menos que o metodo seja estatico.
no seu exemplo no metodo invoke você está passando a propria classe, você tem que instanciar ela.
Classclasse=Class.forName("Classe_"+x);Objectinstancia=classe.newInstance();Methodmetodo=classe.getMethod("calc",int.class,int.class,int.class);result=(Double)metodo.invoke(instancia,n1,n2,n3);//repare que aqui eu uso a instancia
PS: Para usar o newInstance sua classe deve ter um construtor sem parametros, se houver somente construtores com parametros vc vai ter que procurar esse construtor no classe.getConstrutors
L
Luis_Renato
Deu certo!
Obrigado ai aos dois. Valeu.
W
werberthguimaraes
valeu pela ajuda gente, eu estava precisando disso!