나는 책에서 RMI를 작성하기로 결정했다. 나는 rmic로 스텁을 만들었고 rmiregistry를 시작했지만 자바 시작 서버를 작성하려고 할 때 실제로 문제가 발생했습니다. java -classpath D : \ RMI AddServer 예외 : java.rmi. ServerException : 서버 스레드에서 RemoteException이 발생했습니다. n ested exception : java.rmi.UnmarshalException : 인수를 비 정렬 화하는 중에 오류가 발생했습니다. 중첩 된 excep 기입니다 : java.lang.ClassNotFoundException가 :이자바 RMI ClassNotFound 예외
을 :(의 때문에 AddServerImpl_Stub 내가 도움, 나는 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
제 대답을보세요. 제가 쓰고있을 때 코드에 질문을 넣었을 것입니다. 너 너무 가까웠다. –