java需要帮助才能更好地理解RMI
我正在学习RMI,我做了如下工作:
Interface
import java.rmi.*;
public interface IRemote extends Remote {
public void say() throws RemoteException;
}
Server
import java.rmi.*;
import java.rmi.server.*;
public class Server extends UnicastRemoteObject implements IRemote{
public Server() throws RemoteException{}
public void say() throws RemoteException{
System.out.println("I am saying Hello World...");
}
public static void main (String[] argv) {
try {
Naming.rebind ("myserver", new Server());
System.out.println ("Server is ready.");
} catch (Exception e) {
System.out.println ("Hello Server failed: " + e);
}
}
}
Client
import java.rmi.*;
class Client{
public static void main(String args[]){
try{
IRemote obj = (IRemote) Naming.lookup ("rmi://MYPCNAME/myserver");
obj.say();
}catch(Exception e){
System.out.println("Exception : "+e);
}
}
}
为了运行,我首先启动RMI注册表
start rmiregistry
然后java Server
然后java Client
当我把这三样东西放在同一个包里的时候,这个东西很好用。但这并不是RMI的全部内容。我应该能够将客户机放在其他机器或其他位置,然后从那里调用服务器方法
但当我改变客户的包装时。java,我试图编译它,我得到了错误:
Client.java:6: error: cannot find symbol
IRemote obj = (IRemote) Naming.lookup ("rmi://MYPCNAME/myserver");
symbol: class IRemote
location: class Client
它说找不到IRemote,它存在于服务器包中。我想知道,我怎样才能让它正常工作?客户端和服务器在不同的包或机器上
# 1 楼答案
我怀疑问题在于缺乏
import
声明当
Client
与IRemote
在同一个包中时,您可以引用它,而无需导入它。一旦移动了接口,Client
类就不再知道如何找到它