首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java RMI应用程序。"_stub cannot be cast“错误

java RMI应用程序。"_stub cannot be cast“错误
EN

Stack Overflow用户
提问于 2010-12-20 08:52:14
回答 2查看 2.8K关注 0票数 1

在我将文件组织成包之前,这个程序运行得很好。我得到的错误信息如下:

ClassCastException:不能将a3.seneca.RemoteMethod_Stub转换为a3.seneca.RemoteMethod (第35行)

我的包结构如下(caps表示目录):

-A3

--服务器

-数据访问服务器

--SENECA

-RemoteMethodInterface

-RemoteMethod

--客户端

-DataAccessClient

错误消息所指的行如下:

代码语言:javascript
复制
RemoteMethod rmHandler = (RemoteMethod) Naming.lookup("rmi://localhost:666/location");

在此之前,在DataAccessServer中,我这样做:

代码语言:javascript
复制
RemoteMethod rm = new RemoteMethod();
Naming.rebind("rmi://localhost:666/location", rm);

要运行的步骤如下:

控制台窗口#1: rmiregistry 666

控制台窗口#2: java a3\seneca*.java

java a3\server*.java

java a3\client*.java

rmic -v1.2 a3.seneca.RemoteMethod

java DataAccessServer

控制台窗口#3:

java a3.client.DataAccessClient

将RemoteMethod_stub.class放入seneca目录中。在创建之后,我还尝试将其复制到客户端目录中。任何关于为什么会发生这种情况的见解都将不胜感激。

-Dan

EN

回答 2

Stack Overflow用户

发布于 2010-12-20 12:13:26

您正在尝试将存根转换为服务器类。您应该将其转换为远程接口。存根不是服务器的实例,它是远程接口的实例。这就是RMI的工作方式,也是远程接口的用途。

票数 1
EN

Stack Overflow用户

发布于 2018-09-21 20:36:57

我也犯了同样的错误。问题是,我也把接口(它扩展了远程)复制到了客户端。它应该添加到依赖项中,而不是复制。

最好的方法是导出该接口的jar。并将其添加到客户端依赖项中并使用它。

希望它能有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4486082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档