[转]:RMI启动服务出现Stub这个ClassNotFound的解决

RMI启动服务出现Stub这个ClassNotFound的解决

Posted on 2006-03-01 00:58  云自无心水自闲 阅读(1386)  评论(0)   编辑   收藏 所属分类:  Java 
今天一个项目要使用RMI,于是开始写了一个小示例运行一下。
1. 写接口继承Remote,并给出要实现的方法
2. 写一个方法继承UnicastRemoteObject,并实现上面的接口
3. 写Server,进行Naming.rebind
4. 运行rmic(在JDK的bin目录,而不是在JDK\jre\bin目录下)生成Stub。
这中间有一个小麻烦,举例来说如果第2步中的类名是TestObj,放在com.test包中。
那么典型的目录结构是WEB-INF\classes\com\test目录下有一个TestObj.class
这时候需要在WEB-INF\classes目录下运行命令 rmic com.test.TestObj
注意:如何运行的路径和方式不正确的话, 会出现找不到TestObj.class的错误.
5. 写Client端代码,Naming.lookup. 然后调用远程方法。
6. 运行start rmiregistry
7. java com.test.TestObjServer, 这时候出问题了,总是报告说找不到TestObj_Stub.class,奇怪啊,这个Class明明很安静地躺在目录下啊?
经过一番查找,最后目标锁定在java的版本上,因为机器安装了Oracle,而Oracle自带了JDK,而且版本较低,在环境变量中调换了JDK使用的顺序,重新运行命令。
成功了!
8. 生成policy.txt
9. java -Djava.security.policy=policy.txt TestObjClient
得到正确结果!

注意点:
启动server时如果遇到找不到stub问题,原因是rmiregistry找不到stub,而不是java com.Server找不到stub,解决方法,在stub的类同一个目录下启动rmiregistry.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值