本人刚学java rmi,做了一个小程序,我写了一个两数相加的server,又写了一个客户端调用server中的add方法,可是总是报错:
java.lang.ClassCastException: server.AddImpl_Stub cannot be cast to service.interfaces.I_Add
我写的接口名字为I_Add,方法名为AddImpl。
请各位大虾帮忙解答一下怎么解决吧!小弟先谢过了!
java.lang.ClassCastException: server.AddImpl_Stub cannot be cast to service.interfaces.I_Add
我写的接口名字为I_Add,方法名为AddImpl。
请各位大虾帮忙解答一下怎么解决吧!小弟先谢过了!
你是不是有个类class AddImpl implements I_Add //确信你的类实现了I_Add接口?
还有,按你说的,类名是不是和你的接口的方法名重了
package server;import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;public class AddImpl extends UnicastRemoteObject implements I_Add { private static final long serialVersionUID = 5524906781944708371L; public AddImpl() throws RemoteException {
super();
} @Override
public int add(int x, int y) throws RemoteException {
return x + y;
}
}
AddServer 类:
package server;import java.rmi.Naming;
import java.rmi.RMISecurityManager;public class AddServer { /**
* @param args
*/
public static void main(String[] args) {
try {
System.setSecurityManager(new RMISecurityManager());
AddImpl add = new AddImpl();
Naming.bind("ADD", add);
System.out.println("ADD Server Run!!!");
} catch (Exception e) {
e.printStackTrace();
}
}}
I_Add接口:
package server;import java.rmi.Remote;
import java.rmi.RemoteException;public interface I_Add extends Remote {
int add(int x, int y) throws RemoteException;
}客户端:
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
I_Add add = (I_Add) Naming.lookup("rmi://localhost/ADD");
int x = new Integer(jTextField0.getText().trim()).intValue();
int y = new Integer(jAddTxtField1.getText().trim()).intValue();
jTextField.setText(add.add(x, y) + "");
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
自己找了感觉没错啊!请帮忙解答一下吧!