Problema com RMI na hora de criar o stub em classes que estão dentro de algum package

2 respostas
B

Entrando no Embalo, estou com uma dúvida cruel!

Eu criei todos os arquivos como fala no tutorial que tem aqui no guj e joguei dentro de uma pasta no c:, desta maneira funcionou legal o exemplo do tutorial.

Agora, se eu pego e crio essas classes dentro de um projeto no netbeans dentro de algum pacote, o rmic não consegue encontrar a classe e dá os seguintes erros:

error 1: .\MensageiroImp.class does not contain type MensageiroImp as expceted, but type com.testes.rmi.MensageiroImp. Please remove the file, ou make sure it appears in teh correct subdirectory of the classs path.
error 2: Class MensageiroImp not found.

Pelo que eu entendi, ele está reconhecendo “MensageiroImp” como “com.teste.rmi.MensageiroImp”… que é o pacote onde ele está dentro do projeto… É isto mesmo??? Uma luz, please!

Existe algum jeito mais fácil de criar isso no NetBeans, sem ter q ficar abrindo commands e digitando no dos???

Desde já, agradeço pessoal!

2 Respostas

tiagops

Pelo que percebi aqui, a sua classe cliente que chama o metodo remoto tem que estar no mesmo caminho de package. Nao pode estar o cliente num package e o server em outro package, mesmo que estejam em maquinas diferentes. (pelo menos cheguei a essa conclusao, nao sei se estou certo)

Minha classe server esta registrando o rmi sem precisar ir para o DOS. Da uma olhada se assim da certo :

import java.rmi.Naming;

import org.apache.log4j.Logger;




public class ProcessadorServer {

	Logger logger = Logger.getLogger(ProcessadorServer.class);
	
    public ProcessadorServer() {
    	try {
    		 java.rmi.registry.LocateRegistry.createRegistry(1099);
    		 logger.debug("RMI registry ready.");
    	  } catch (Exception e) {
    		 logger.debug("Exception starting RMI registry:");
    		 e.printStackTrace();
    	  }	
    	
    	
    	try {
            ProcessadorMetodos m = new ProcessadorImpl();
            Naming.rebind("rmi://localhost:1099/Processador", m);
            logger.debug("");
            logger.debug("Server On...");
            logger.debug("");
            
            
        }
        catch( Exception e ) {
        	logger.error( "Trouble: " + e );
        }
    }
Vinicius_Santos

Olá Bezerra, acho que uma resposta bem simples pro seu problema é:

rmic -d com/testes/rmi com.testes.rmi.MensageiroImp

Até mais!

Criado 2 de agosto de 2006
Ultima resposta 7 de ago. de 2006
Respostas 2
Participantes 3