发生此错误时我该怎么做:
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
谢谢你
答案 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
至少,它对我来说很好。