![](/img/trans.png)
[英]RMI Binding Issue (from Windows RMI Server to Ubuntu RMI Registry)
[英]Using RMI on the windows 7
我是在Windows 7上使用RMI的新手,并且我想使用RMI运行我的项目以显示“ HelloWorld”,但是我无法运行它,因为出现了以下错误。 任何人都可以帮助我。 我也用过JDK 1.6。
我的错误是:
java.rmi.UnmarshalException:错误解组参数; 嵌套的异常是:
java.lang.ClassNotFoundException: Hello_Stub
有三种方法可以获取此异常:
构造/导出远程对象时。 在这种情况下,它意味着你没有提供的端口号参数super(int port...)
如果你的远程对象扩展UnicastRemoteObject,
或UnicastRemoteObject.exportObject()
否则,你有没有产生经由支rmic
。 请注意,如果您提供的端口号参数,甚至为零,则根本不需要运行rmic
。
将远程对象绑定/重新绑定到注册表时(在服务器中)。 在这种情况下,这意味着您没有提供上面的端口号等,但是您已经生成了存根,否则由于(1)的原因您不会得到这么多, 但是 _Stub类在注册表上不可用其CLASSPATH。 最简单的解决方案是通过LocateRegistry.createRegistry()
在同一个JVM中运行注册表。 请注意,此方法的返回值需要存储在不会进行垃圾回收的位置,例如,在静态变量中。
查找注册表时(在客户端中)。 在这种情况下,这意味着您没有提供上面的端口号等,但是您已经生成了存根,否则由于(1)和(2)的缘故,您不会走得太远, 但是 _Stub类不可用在其CLASSPATH上传递给客户端。 解决方案:将其部署到客户端。
听起来您可能正在遵循本教程的过时版本: http : //docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html 。 如果不是这种情况,请在命令行上检查您的Java版本( java -version
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.