我是在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上传递给客户端。解决方案:将其部署到客户端。

10-06 14:37