rmi找不到stub

razelan 2005-07-09 03:37:16
我的机器用的是jdk1.5beta1,写了个简单的rmi的测试程序(import和程序的详细内容已经略去)
以下是服务器端的程序
package Server;
public interface PerfectTimeI extends Remote {}

package Server;
public class PerfectTime extends UnicastRemoteObject implements PerfectTimeI {}

rmiserver.policy
grant {
permission java.security.AllPermission;
};

我的机器上用rmic Server.PerfectTime命令只生成了PerfectTime_Stub.class,且和PerfectTime.class在同一目录下,rmiregistry已经运行.

我试图运行 java -Djava.security.policy=rmiserver.policy Server.PerfectTime的时候有错误
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: Server.PerfectTime_Stub
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:385)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
at sun.rmi.transport.Transport+1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:566)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:343)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at java.rmi.Naming.bind(Naming.java:111)
at Server.PerfectTime.main(PerfectTime.java:27)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: Server.PerfectTime_Stub
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
at sun.rmi.transport.Transport+1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:566)
Caused by: java.lang.ClassNotFoundException: Server.PerfectTime_Stub
at java.net.URLClassLoader+1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:233)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:430)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
at java.rmi.server.RMIClassLoader+2.loadClass(RMIClassLoader.java:618)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:246)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1535)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1457)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1296)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
... 9 more

不知道是什么原因,尤其对java.lang.ClassNotFoundException: Server.PerfectTime_Stub不理解.请大家帮忙看看


...全文
162 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Octer 2006-07-04
  • 打赏
  • 举报
回复
楼上的正解
应该是classpath的问题
set classpath=.;E:\server.jar;%classpath%
然后在任意目录下运行start rmiregistry
应该没有问题!
infowain 2006-07-04
  • 打赏
  • 举报
回复
或者设置classpath,或者在你编译的目录来执行
zgysc 2006-07-04
  • 打赏
  • 举报
回复
你的classpath没有设置正确
qichuanxin 2005-12-28
  • 打赏
  • 举报
回复
你在运行rmiregisitry之前要把你的类包加到classpath中
junnef 2005-11-16
  • 打赏
  • 举报
回复
应该和你的服务的接口文件类放在一起,同时classpath中要能找的到.
brushington 2005-10-31
  • 打赏
  • 举报
回复
在那个目录下,环境变量也对,就是找不到????
kingfish 2005-07-09
  • 打赏
  • 举报
回复
stub应该在server目录下

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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