我运行下面的 RMI 程序,但它显示命令执行失败

i run the rmi program below but it shows command execution failed

提问人:YAChee 提问时间:11/15/2021 最后编辑:user207421YAChee 更新时间:1/24/2022 访问量:79

问:

此程序应从客户端向服务器发送文本消息。我完成了文件的编译。server.java成功运行,但client.java显示错误。
错误列表太长,所以我只截图了几行。
enter image description here

这是代码
ReceiverMessageInterface.java

package com.mycompany.dsa3;
import java.rmi.*;

public interface ReceiveMessageInterface extends Remote{
  void receiveMessage(String x) throws RemoteException;
}

RmiServer.java

package com.mycompany.dsa3;
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.net.*;

public class RmiServer extends 
  java.rmi.server.UnicastRemoteObject implements ReceiveMessageInterface{
  String address;
  Registry registry; 

  public void receiveMessage(String x) throws RemoteException{
  System.out.println(x);
  }
  
  public RmiServer() throws RemoteException{
  try{  
  address = (InetAddress.getLocalHost()).toString();
  }
  catch(Exception e){
  System.out.println("can't get inet address.");
  }
  int port=3232; 
  System.out.println("this address=" + address +  ",port=" + port);
  try{
  registry = LocateRegistry.createRegistry(port);
  registry.rebind("rmiServer", this);
  }
  catch(RemoteException e){
  System.out.println("remote exception"+ e);
  }
  }
  static public void main(String args[]){
  try{
  RmiServer server = new RmiServer();
  }
  catch (Exception e){
  e.printStackTrace();
  System.exit(1);
  }
  }
}

RmiClient.java

package com.mycompany.dsa3;
import java.rmi.*;
import java.rmi.registry.*;
import java.net.*;

public class RmiClient{
  static public void main(String args[]){
  ReceiveMessageInterface rmiServer;
  Registry registry;
  String serverAddress=args[0];
  String serverPort=args[1];
  String text=args[2];
  System.out.println    ("sending " + text + " to " +serverAddress + ":" + serverPort);
  try{
  registry=LocateRegistry.getRegistry
  (serverAddress,(new Integer(serverPort)).intValue());
  rmiServer=(ReceiveMessageInterface)(registry.lookup("rmiServer"));
  // call the remote method
  rmiServer.receiveMessage(text);
  }
  catch(RemoteException e){
  e.printStackTrace();
  }
  catch(NotBoundException e){
  System.err.println(e);
  }
  }
}  

请帮我更正代码。谢谢

Java ArrayIndexOutOfboundsException

评论

0赞 user207421 1/24/2022
这与rmi无关。

答:

0赞 Developer 11/15/2021 #1

从 args 数组读取元素时似乎发生错误。 请检查您正在传递的参数的长度。 在从中读取元素之前,我们还应该始终检查 args[] 的长度。 请参阅以下链接和答案 什么是“String args[]”? main 方法 Java 中的参数