Chamada de classe dinamica (Resolvido)

gente tenho uma classe que chama dinamicamente outra
e funciona legal
porem preciso chamar uma outra classe que funciona em outro pacote
mesmo eu importando a classe do pacote da excessao classnotfound

como fazer para chamar a classe em outro pacote

[code]import PacoteTeste.Teste4;

public class ChamadaDinamica {

public static void main(String[] args) {

    Object obj;
    String a;

    try {

        String s = "teste2";  // este chamada funciona normalmente

// String s = “Teste4”; // esta outra classe se encontra em outro pacote e nao funciona
// as duas classes sao iguais
obj = Class.forName(s).newInstance();
a = (String) obj.getClass().getMethod(“getNome”).invoke(obj);
System.out.println(a);

    } catch (Exception e) {

        System.out.println("primeira excessao");
        System.out.println(e);

    }

}

}

class teste2 {
public teste2 () {
System.out.println(“testado”);
System.out.println(“testado2”);
System.out.println(“testado3”);
System.out.println(“testado4”);
System.out.println(“testado5”);
}
public String getNome() {
return “funciona”;
}
}[/code]

a classe Teste4 em outro pacote que nao consigo chamar

[code]package PacoteTeste;

public class Teste4 {
public Teste4 () {
System.out.println(“testado”);
System.out.println(“testado2”);
System.out.println(“testado3”);
System.out.println(“testado4”);
System.out.println(“testado5”);
}
public String getNome() {
return “funciona”;
}
}[/code]

Estamos falando em reflection.
Só muda o nome para Teste2, não fuja do padrão Java Beans, por favor.

Está compilando via IDE ou “na unha” ?

estou utilizando o netbeans e ja fiz o teste tambebm
com o eclipse
e os dois me retornam o mesmo problema

Está usando o Fully qualified name da classe?

tambem ja tentei o Fully qualified

Isso me cheira a problema de classpath e não de invocação.
Está tudo no mesmo projeto ?

esta no mesmo projeto

[quote=jonasjgs2]esta no mesmo projeto
[/quote]

Tente assim:

obj = Class.forName("PacoteTeste.Teste4").newInstance(); 

Oi,

Eu acho que quando usado o Class.forName(String) para pegar classes de outro pacote, deve-se especificar o pacote inteiro da classe.

Por exemplo:

[code]public class ChamadaDinamica {

public static void main(String[] args) {

    Object obj;
    String a;

    try {

        String s = "PacoteTeste.Teste4"; // esta outra classe se encontra em outro pacote e nao funciona
                                      // as duas classes sao iguais     
        obj = Class.forName(s).newInstance();
        a = (String) obj.getClass().getMethod("getNome").invoke(obj);
        System.out.println(a);

    } catch (Exception e) {

        System.out.println("primeira excessao");
        System.out.println(e);

    }

}

}

class teste2 {
public teste2 () {
System.out.println(“testado”);
System.out.println(“testado2”);
System.out.println(“testado3”);
System.out.println(“testado4”);
System.out.println(“testado5”);
}
public String getNome() {
return “funciona”;
}
}[/code]

Tchauzin!

[quote=lina]Oi,

Eu acho que quando usado o Class.forName(String) para pegar classes de outro pacote, deve-se especificar o pacote inteiro da classe.

Tchauzin![/quote]

Qualquer classe com pacote, na realidade. Class.forName(String className). Isso pode ser alterado usando o Class.forName(String name, boolean initialize, ClassLoader loader).

parabens lina e nel…

tem que chamar com o pacote a string tem que
ser

“PacoteTest.Teste4”