我決定編寫RMI(從書中)也從書中取得代碼。我用rmic創建了存根,並啓動了rmiregistry,但是當我決定編寫java Start Server時,我遇到了問題,其實這裏是我遇到的問題: java -classpath D:\ RMI AddServer 異常:java.rmi。 ServerException:在服務器線程中發生RemoteException; 意外的異常是: java.rmi.UnmarshalException:錯誤解組參數;嵌套excep 重刑是: 拋出java.lang.ClassNotFoundException:AddServerImpl_Stub 請我需要幫助,我失去了很多時間,因爲這:(Java RMI ClassNotFound例外
AddServerIntf.java
package rmi.app;
import java.rmi.*;
public interface AddServerIntf extends Remote {
double add(double d1,double d2) throws RemoteException;}
AddServerImpl
package rmi.app;
import java.rmi.*;
import java.rmi.server.*;
public class AddServerImpl extends UnicastRemoteObject implements AddServerIntf {
public AddServerImpl() throws RemoteException {}
public double add(double d1, double d2) throws RemoteException {
return d1+d2;
}
}
AddSer版本
package rmi.app;
import java.net.*;
import java.rmi.*;
public class AddServer {
public static void main(String[] args) {
try {
AddServerImpl addServerImpl = new AddServerImpl();
Naming.rebind("AddServer", addServerImpl);
}
catch (Exception e){
System.out.println("Exception:"+e);
}
}
}
了addClient
package rmi.app;
import java.rmi.Naming;
public class AddClient {
public static void main(String[] args) {
try{
String addServerURL= "rmi://"+args[0]+ "/AddServer";
AddServerIntf addServer =(AddServerIntf)Naming.lookup(addServerURL);
System.out.println("The first number is:"+args[1]);
double d1= Double.valueOf(args[1]).doubleValue();
System.out.println("The second number is:"+args[2]);
double d2= Double.valueOf(args[2]).doubleValue();
System.out.println("the sum is:"+ addServer.add(d1,d2));
}
catch(Exception e){
System.out.println("Exception : "+ e);
}
}
}
您正在使用哪個版本的java? – wmorrison365 2013-03-22 17:48:20
看看我的回答,你寫的時候可能會把你的代碼放在問題中。你可能太接近了。 – 2013-03-22 17:56:44