【问题标题】:Why are my stub classes not being found?为什么找不到我的存根类?
【发布时间】:2011-07-08 11:01:57
【问题描述】:

我在 VM 上运行 RMI 服务器,但我不断收到此错误:

Failure during Name registration: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: MarketBBImpl_Stub

Failure during Name registration: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: AMPLocation_Stub

所有类文件都在同一个目录中(包括存根文件),当我在本地运行它时没有问题。

有人知道这里发生了什么吗?

【问题讨论】:

    标签: java rmi classnotfoundexception


    【解决方案1】:

    如果您查看堆栈跟踪,您可能会在下面看到 bind() 或 rebind()。这表明相关的服务器是 RMI Registry。它需要通过其 CLASSPATH 访问您的类。

    【讨论】:

      【解决方案2】:

      您是否运行过 http 服务器来向 RMI 服务器传递课程?

      【讨论】:

      • (a) 您没有义务使用代码库功能; (b) 它将类文件传递给注册表和客户端,很少传递给服务器。
      • RMI 服务器是指 RMI 注册表。很难理解吗??
      • 我有点迷路了。我正在与尝试绑定对象的程序在同一台机器上运行 rmiregistry。我认为如果对象在同一个位置,那么没有 http 服务器也可以工作?
      • 您有 2 个变体:1) 简单,为注册表和客户端提供类,只需复制它们并设置类路径 2) 您可以使用 http 服务器动态加载类。因此,如果想保持简单,请确保在启动 RMI 注册表和客户端时告诉他们类路径
      • 是的,实际上,这有点难以理解。在 RMI 上下文中,“服务器”通常表示远程对象,或者它正在运行的主机。它也可以表示 DGC 远程对象。最好具体一点。
      猜你喜欢
      • 2023-03-19
      • 2014-06-26
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多