【问题标题】:How do I set up RMI in java?如何在 Java 中设置 RMI?
【发布时间】:2013-10-23 17:16:05
【问题描述】:

所以我刚刚开始使用 RMI,并且 我为服务器端构建了这些类:

public interface ServiceServer extends Remote
public class ServiceServerImpl extends UnicastRemoteObject implements ServiceServer
public interface Service extends Serializable 

这个类用于客户端:

public class ServiceBrowser

当我尝试运行我的程序时,我得到了这个异常:

    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
java.lang.ClassNotFoundException: FirstTryRMI.ServiceServer

据我了解,问题在于 RMI 找不到类(?)。 我已经看遍了,我似乎无法理解,如何将我的类文件添加到正确的位置?

【问题讨论】:

    标签: java jakarta-ee rmi


    【解决方案1】:

    确保您的客户端也包含 jar 文件,它必须具有 ServiceServer 类。

    【讨论】:

    • 这是他将遇到的下一个问题,但当前的问题是注册表看不到该类。
    • 我已经很多年没有做过 RMI,但我从来不记得必须将客户端 jars 放在 rmiregistry 类路径中。
    • 那么注册表究竟从哪里获取远程接口和存根类呢?查看堆栈跟踪。他有一个包装 UnmarshalException 的 ServerException。因此,无论他调用的服务器在其 CLASSPATH 中都没有该类。那只能是注册表。也许在您的情况下,您使用 LocateRegistry 而不是 rmiregistry 命令。
    【解决方案2】:

    您需要确保注册表的 CLASSPATH 上有您的远程接口、存根等。

    【讨论】:

      猜你喜欢
      • 2012-07-27
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 2021-06-13
      • 1970-01-01
      相关资源
      最近更新 更多