救救命!

mzjs 2001-03-04 12:03:00
我用Jbuilder4.0写了一个使用RMI的测试程序:
System.out.println("Create RMI Server...");
HelloWorldImpl hello = new HelloWorldImpl();
System.out.println("bind the hello world to registry...");
Naming.rebind ("HelloWorld", hello);
运行后总是出现下面的错误:
Create RMI Server...
bind the hello world to registry...
RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: mytestrmi.HelloWorldImpl_Stub
不知为何????
...全文
118 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
QDog 2001-03-05
  • 打赏
  • 举报
回复
关注
skyyoung 2001-03-04
  • 打赏
  • 举报
回复
(thinking in java)
15.8.3 创建根与干
若编译和运行PerfectTime.java,即使rmiregistry正确运行,它也无法工作。这是由于RMI的框架尚未就位。首先必须创建根和干,以便提供网络连接操作,并使我们将远程对象伪装成自己机器内的某个本地对象。
所有这些幕后的工作都是相当复杂的。我们从远程对象传入、传出的任何对象都必须“implement Serializable”(如果想传递远程引用,而非整个对象,对象的参数就可以“implement Remote”)。因此可以想象,当根和干通过网络“汇集”所有参数并返回结果的时候,会自动进行序列化以及数据的重新装配。幸运的是,我们根本没必要了解这些方面的任何细节,但根和干却是必须创建的。一个简单的过程如下:在编译好的代码中调用rmic,它会创建必需的一些文件。所以唯一要做的事情就是为编译过程新添一个步骤。
然而,rmic工具与特定的包和类路径有很大的关联。PerfectTime.java位于包c15.Ptime中,即使我们调用与PerfectTime.class同一目录内的rmic,rmic都无法找到文件。这是由于它搜索的是类路径。因此,我们必须同时指定类路径,就象下面这样:
rmic c15.PTime.PerfectTime
执行这个命令时,并不一定非要在包含了PerfectTime.class的目录中,但结果会置于当前目录。
若rmic成功运行,目录里就会多出两个新类:
PerfectTime_Stub.class
PerfectTime_Skel.class
它们分别对应根(Stub)和干(Skeleton)。现在,我们已准备好让服务器与客户互相沟通了。

skyyoung 2001-03-04
  • 打赏
  • 举报
回复
http://java.sun.com/docs/books/tutorial/rmi/index.html
mzjs 2001-03-04
  • 打赏
  • 举报
回复
我已经生成了根和干:
HelloWorld.class :远程接口类
HelloWorldImpl.class :远程接口实现类
HelloWorldImpl_Stub.class :系统自动生成的干
HelloWorldImpl_Skel.class :系统自动生成的根
HelloWorldService.class :发布远程接口类
在执行过程中,就会产生上述错误……??

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧