[Resolvido]ClassCastException ao usar RMI

7 respostas
J

Ola galera,mais uma vez venho pedir a ajuda de vcs se possível!!!
Estou fazendo um exercício de RMI para a faculdade,criei a interface estendi a classe remota,criei o método na interface.Após isso criei a classe de implementação estendi o UnicastRemoteObject e implementei a interface que tinha criado,então criei o método construtor da classe que lança uma RemoteException,com o comando rmic criei a classe Stub,executei o rmiregistry e executei a classe do serviço,porém ao executar a classe cliente veio o seguinte erro:

Exception in thread main java.lang.ClassCastException: RMI.ola_Stub cannot be cast to RMI.ola

at RMI.meuclienteremoto.go(meuclienteremoto.java:19)

at RMI.meuclienteremoto.main(meuclienteremoto.java:13)

Java Result: 1

segue o código da interface:

package RMI;

import java.rmi.*;
public interface remoto extends Remote {
 
    public String olamundo() throws RemoteException;
}

código da classe de implementação:

package RMI;

import java.net.MalformedURLException;
import java.rmi.*;
import java.rmi.server.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ola extends UnicastRemoteObject implements remoto {
     public ola() throws RemoteException{
       
     }
    
    @Override
    public String olamundo() throws RemoteException {
       String ola="Ola tudo bem?";
       return ola;
               
    }
    
    public static void main(String [] args){
       try{
             remoto service=new ola();
             Naming.rebind("OLA", service);
       }
       
       
       catch(Exception e){
           e.printStackTrace();
       }
    }
    
}

código da classe cliente:

package RMI;

import java.net.MalformedURLException;
import java.rmi.*;
import java.util.logging.Level;
import java.util.logging.Logger;


public class meuclienteremoto {
    
    public static void main(String [] args){
        new meuclienteremoto().go();
    }
    
    public void go(){
        try {      
           
          ola service= (ola) Naming.lookup("rmi://localhost/OLA");
            
            String ola=service.olamundo();
            System.out.println(ola);
        } catch (NotBoundException ex) {
            ex.printStackTrace();
        } catch (MalformedURLException ex) {
            Logger.getLogger(meuclienteremoto.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RemoteException ex) {
            Logger.getLogger(meuclienteremoto.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Quem puder me ajudar eu agradeço!!!

7 Respostas

V

Por favor, leia nosso guia de postagem:

Nele você descobriria que:

a) Não se deve postar o título INTEIRO EM LETRAS MAIÚSCULAS;

b) Deve-se dar um título descritivo ao tópico;

c) Você deve ler com atenção a lista de fóruns antes de postar. RMI não tem nada de Java Básico.

PS: A palavra estendi se escreve com “s”, não com “x”.

J

ok,deletarei meu tópico!Desculpe pelo ocorrido

V

jcisinho20:
ok,deletarei meu tópico!Desculpe pelo ocorrido

Não há como deletar tópicos. Eu já movi ao local certo e corrigi o título.

J

Ok,obrigado Viny,prometo que irei ter mais cuidado da próxima vez,e que sou novo no fórum,desculpe!!!Mas preciso da ajuda de vcs se possível para corrigir o erro do código!!
Se alguém puder me ajudar,agradeço!

J

Ninguém para me ajudar?

D

O correto não seria ?

remoto service= (remoto) Naming.lookup("rmi://localhost/OLA");

Pois ola é a classe concreta que fica no servidor…

J

Isso mesmo dobau,era esse o erro,obrigado pela ajuda,fica com Deus e ate+

Criado 25 de dezembro de 2012
Ultima resposta 26 de dez. de 2012
Respostas 7
Participantes 3