Как экспортировать файлы с сервера на клиент - Java RMI - PullRequest
0 голосов
/ 09 июля 2011

Я новичок в Java RMI и просто пытаюсь запустить программу "Hello World" (код показан в конце сообщения)

По сути, у меня есть удаленный класс, удаленный интерфейси класс сервера на одном из моих компьютеров и класс клиента на другом компьютере.Я пытаюсь получить "привет" сообщение с сервера с помощью клиента.Проблема в том, что я не могу скомпилировать клиент и запустить его, если у меня нет удаленного интерфейса и заглушки в том же каталоге, где находится клиент, и в то же время я не могу запустить сервер, если у меня нетте, что находятся в том же каталоге, что и сервер.

Я скомпилировал сервер / удаленный класс / интерфейс с помощью javac, а затем с помощью компилятора rmic."Привет!"

Мне интересно, как я мог бы заставить это работать без необходимости иметь все файлы на обоих компьютерах (именно поэтому я хочу распространять его)

Заранее спасибо!

Код:

Удаленный интерфейс:

import java.rmi.*;  

 //Remote Interface for the "Hello, world!" example.  
public interface HelloInterface extends Remote {  
  public String say() throws RemoteException;  
}  

Удаленный класс:

import java.rmi.*;  
import java.rmi.server.*;  

public class Hello extends UnicastRemoteObject implements HelloInterface {  
  private String message;  

  public Hello (String msg) throws RemoteException {  
    message = msg;  
  }  

  public String say() throws RemoteException {  
    return message;  
  }  
} 

Клиент: import java.rmi. *;

public class Client  
{  
    public static void main (String[] argv)  
    {  
        try  
                 {  
            HelloInterface hello= (HelloInterface) Naming.lookup(host);  //the string        representing the host was modified to be posted here  
            System.out.println (hello.say());  
        }  
        catch (Exception e)  
        {  
            System.out.println ("Hello Server exception: " + e);  
        }  
    }  
} 

Сервер:

  public static void main (String[] argv) {  
    try {  
      Naming.rebind ("Hello", new Hello ("Hello, world!"));  
      System.out.println ("Hello Server is ready.");  
    } catch (Exception e) {  
      System.out.println ("Hello Server failed: " + e);  
    }  
  }  

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

мне интересно, как я мог заставить это работать без необходимости иметь все файлы на обоих компьютерах

Ты не можешь. Вы должны распространить необходимые файлы классов для клиента.

(именно поэтому я хочу сделать его распространяемым)

Не секвитур.

0 голосов
/ 08 марта 2012

Я думаю, просто создать идентичный источник на обоих концах.

...