Bom dia Gente,

 Existe alguma forma de carregar uma classe dinamicamente de um host remoto,
por exemplo via RMIClassLoader, criar uma instancia desta classe, por
exemplo usando o metodo newIntance(), e "castear" o objeto criado para uma
variavel de referencia a um objeto da classe original, sem ter na JVM local
o arquivo .class da classe?

Vejam o seguinte exemplo:

10. Class aClas = RMIClassLoader.loadClass(enderecoURLRemoto, "MyClass");

11. Object o = aClass.newInstance();

12. MyClass myClass;

13. myClass = (MyClass) o;

Compilei este exemplo sem problemas num diretorio de desenvolvimento e gerei
um arquivo, digamos, AnyClass.class. Coloquei apenas esta classe (AnyClass)
num site remoto e tentei rodar este codigo.

A linha 10, carrega a classe MyClass.class desde um site remoto para a JVM
local, sem problemas.

A Linas 11 cria uma instancia desta classe, porem retorna uma referencia a
um Object.

A linha 12 nao da problemas.

 A linha 13 dispara um NotClassDefFoundError, dizendo que a JVM nao achou a
classe. Efetivamente esta classe nao esta localmente no disco do host da JVM
local, porem, ela foi de fato carregada remotamente na JVM na linha 10. Eu
achei que isto poderia funcionar.



Alguem sabe explicar o por que deste comportamento ?

Existe alguma forma de carregar classes dinamicamente numa JVM, criar
objetos, e usar suas variaveis e metodos publicos, sem ter que recorrer para
isto a variaveis de referencia de interfaces ou de superclasses?



Obrigado e caso respondam por favor enviem e-mail tambem para
[EMAIL PROTECTED]

Daniel (de Rio)


    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    [regras da lista: http://www.soujava.org.br/regras.htm]
    ---------------------------------------------------------------------

Responder a