Erro RMI?

5 respostas
A

Alguem sabe que erro é esse quando eu executo meu programa que implementa o rmi?

Trouble: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
        java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
        java.lang.ClassNotFoundException: HelloImpl_Stub

O programa é esse:

import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.registry.*;
import javax.swing.*;
/**
 *
 * @author  halisson.duraes
 */
public interface Hello extends Remote {
    void retorna(String s) throws RemoteException;
}

class HelloImpl extends UnicastRemoteObject implements Hello{
    public HelloImpl() throws RemoteException{}
    
    public void retorna(String s) throws RemoteException{
        JOptionPane.showMessageDialog(null,s);
    }
}

class HelloServer{
    public static void main(String[] args) {
        try{
            String name="teste";
            HelloImpl hi=new HelloImpl();
            Registry r = LocateRegistry.getRegistry();
            r.bind(name , hi);
        }catch(UnmarshalException ume){
            System.out.println(ume);
        }catch(Exception e){
            System.out.println(e);
        }
    }
}

class HelloClient{
    public static void main(String[] args) {
        try{
            
           Remote remRef = Naming.lookup("rmi://localhost:1099/teste");
           Hello h=(Hello) remRef;
           String s=JOptionPane.showInputDialog(null,"Digite:");
           h.retorna(s);
        }catch(UnmarshalException ume){
            System.out.println(ume);
        }catch(Exception e){
            System.out.println(e);
        }
        System.exit(0);
    }
}

5 Respostas

J

Não sei ao certo kra… mas acho que você não utilizou o programa rmic para gerar a classe HelloImpl_Stub…

rmic HelloImpl

Espero ter ajudado…
Flw…

A

Isso eu tenho certeza que eu fiz certo e eu tb verifique se tinha gerado os arquivos stub e skel, todos foram gerados sem erros com rmic.
Eu estava testando um exemplo mais complexo, mas sem sucesso. Então eu resolvi verificar com um exemplo mais simples e continuou dando o mesmo erro.

E

Fala galera! É… RMI tem algumas peculiaridades que deixam qualquer um na frente do micro umas horas pra resolver. Ainda mais num primeiro contato! Da última vez que postei aqui no portal ninguém conseguiu me ajudar, eu tinha o mesmo problema. Vamos ver: Esta mensagem de ClassNotFoundException é provavelmente um erro de classpath. Pra você não quebrar muito a cabeça, se teu ambiente de desenvolvimento integrado é o Eclipse, aconselho seriamente o uso do plugin genady http://www.genady.net/rmi/. Se for este o caso, mais uma dica: Após a instalação do plugin, clique com o botão direito do mouse no teu projeto, vá em Run -> Run…
Crie uma nova configuração para teu projeto com o plugin Genady (RMI Application). Vá até a aba RMI Properties. Ali, em “Java rmi server codebase” você vai escolher onde o RMI registry vai procurar as tuas classes STUB. Eu costumo usar “Compute from classpath”. Se for o problema de classpath, agora tua aplicação irá funcionar. Dê uma pesquisada nas funcionalidades do plugin que tem muito a oferecer. (Tem até um monitor de objetos registrados no RMIREGISTRY) A lincença não é totalmente free. Espira em alguns dias. Eu consegui uma licença de proprietário enviando um e-mail para o pessoal que desenvolveu, justificando que era para um projeto da faculdade. Bom, se teu caso não for o de estar usando o eclipse, você terá de por “no braço” tuas classes no classpath do teu SO e rezar pra funcionar. Qualquer coisa estou aew pra trocar uma idéia! Grande abraço!

Atenciosamente,

Pablo dos Santos Alves

A

Olá pessoal eu adicionei a minhas classes no classpath funcionou certinho!!

Vlw, brigadão

Hailton_Duarte

Valeu EinsamkeitPJ;
Depois de 7 anos sua resposta me quebrou um baita galho.
vc é Demais.

Criado 9 de junho de 2005
Ultima resposta 24 de abr. de 2012
Respostas 5
Participantes 4