我尝试使用公司网络中连接的两台计算机实现RMI概念。我使用我的IP地址和特定的端口号绑定了远程对象。当我在我的本地机器上尝试时,一切正常。
现在,为了从其他计算机访问它,我与另一台计算机和客户端代码共享了Adder(扩展远程)接口.class文件。当我尝试访问它时,它抛出 ClassNotFoundException:stub not found 。
所以我分享了运行命令>>后生成的 stub.class 文件。 rmic AddImpl 。之后,它在远程计算机上也运行良好。
现在我的问题是,RMI是如何实现的?我们是否需要共享Adder接口和生成的存根类文件,以便客户端访问我们的远程方法?
以下是我的类和接口:
interface Adder extends Remote
class AddImpl extends UnicastRemoteObject implements Adder
class Server
class Client
答案 0 :(得分:0)
您需要共享3个文件 Adder.class,Adder.java,AdderRemote_Stub.class(不是java代码)
我们假设你已经编译了
创建两个不同的目录
启动3命令提示符
为第一个目录(服务器)设置前2个命令提示符
示例:c:\ rmiserver
将所有文件放在此处
为第二个目录(客户端)设置最后1个命令提示符
示例:c:\ rmiclient
将客户端特定文件,存根和远程放在这里
(可选)设置CLASSPATH =。在所有命令提示符
这将允许在CLASSPATH
important:在命令提示符下运行rmiregistry命令,其中服务器.class文件位于CLASSPATH中
在前2个命令提示符
中的任何一个中运行rmiregistry 5000命令让它继续运行
在前2个
在最后一个命令提示符(另一个目录
)中运行客户端“java MyClient”如果这是有效的,那么您的网络逻辑将起作用
重复java.rmi.ServerException: RemoteException occurred in server thread (ClassNotFoundException)