运行我的RMI项目时出错

时间:2011-12-07 10:27:21

标签: netbeans rmi

发生此错误时我该怎么做:

  

java.rmi.UnmarshalException:错误解组参数;嵌套异常是:           java.lang.ClassNotFoundException

我在“MY计算机”的属性中添加了JDK中bin的路径:这个“C:\ Program Files \ Java \ jdk1.6.0_19 \ bin”

我输入了run-cmd -

cd C:\Users\user\Documents\NetBeansProjects\CountRMI\src\countrmi 
start rmiregistry

我运行服务器,因此出现此错误

  

java.rmi.UnmarshalException:错误解组参数;嵌套异常是:           抛出java.lang.ClassNotFoundException

谢谢你

2 个答案:

答案 0 :(得分:0)

考虑查看Cajo project。它包装了RMI,因此您不必担心启动rmi注册表等。 请参阅以下示例中的一个Cajo wiki pages

<强> Duck.java

public interface Duck {
   boolean looks();
   boolean walks();
   boolean talks();
}

<强> DuckServer.java

import gnu.cajo.invoke.Remote;
import gnu.cajo.utils.ItemServer;

public class DuckServer implements Duck {
   public boolean looks()  {
      System.out.println("hi there!");
      return true;
   }
   public boolean walks()  {
      System.out.println("waddle waddle");
      return true;
   }
   public boolean talks() {
      System.out.println("quack quack!");
      return true;
   }
   public static void main(String args[]) throws Exception { // simple unit test
      Remote.config(null, 1198, null, 0); // use cajo port 1198
      ItemServer.bind(new DuckServer(), "Donald");
      System.out.println("duck server running");
   }
}

<强> DuckClient.java

import gnu.cajo.utils.extra.TransparentItemProxy;

public class DuckClient { // try out DuckServer
   public static void main(String args[]) throws Exception {
      Duck duck = (Duck)TransparentItemProxy.getItem(
         "//serverHost:1198/Donald",
         new Class[] { Duck.class }
      );
      System.out.println("looks like = " + duck.looks());
      System.out.println("walks like = " + duck.walks());
      System.out.println("talks like = " + duck.talks());
   }
}

答案 1 :(得分:0)

时间过去了,但也许这有助于某人。当你把

cd C:\Users\user\Documents\NetBeansProjects\CountRMI\src\countrmi 

您正在设置源文件的路径,但是您必须以这种方式将其设置为类文件

cd C:\Users\user\Documents\NetBeansProjects\CountRMI\build\classes

然后开始rmiregistry

至少,它对我来说很好。