com.sun.proxy.$Proxy0 无法转换为
com.sun.proxy.$Proxy0 cannot be cast to
我有以下 RMI 连接代码,其中 returns 出现 com.sun.proxy.$Proxy0 无法转换为 Client.AdditionInterface 错误。我创建了两个单独的包客户端和服务器,并将接口放入其中。这是我的完整代码:
package Serveur;
import java.rmi.*;
import java.rmi.registry.LocateRegistry;
public class AdditionServer {
public static void main (String[] argv) {
try {
LocateRegistry.createRegistry(1099);
Addition Hello = new Addition();
Naming.rebind("rmi://"+java.net.InetAddress.getLocalHost().getHostName()+"/ABC", Hello);
System.out.println("Addition Server is ready.");
}
catch (Exception e) {
System.out.println("Addition Server failed: " + e);
}
}
}
///////////////////////////////////
package Serveur;
import java.rmi.*;
import java.rmi.server.*;
public class Addition extends UnicastRemoteObject implements AdditionInterface {
public Addition () throws RemoteException {
super();
}
@Override
public int add(int a, int b) throws RemoteException {
int result=a+b;
return result;
}
@Override
public String aff(int a, int b) throws RemoteException {
return String.valueOf(add(a, b));
}
}
///////////////////////////
package Client;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface AdditionInterface extends Remote {
public int add(int a,int b) throws RemoteException;
public String aff(int a, int b) throws RemoteException;
}
///////////////////////////
package Client;
import java.rmi.*;
public class AdditionClient {
public static void main (String[] args) throws Exception {
AdditionInterface add = (AdditionInterface) Naming.lookup("rmi://"+java.net.InetAddress.getLocalHost().getHostName()+"/ABC");
System.out.println("Result is :"+add.add(9, 10));
System.out.println(add.aff(26, 45));
}
}
有什么帮助吗?谢谢。
对于客户端的 Client.AdditionInterface
和服务器的 Server.AdditionInterface
?实际上错误是说 Server.AdditionInterface cannot be cast to Client.AdditionInterface
.
使用 RMI,您必须在客户端和服务器上具有相同的接口 class,但显然服务器实现 class (AdditionServer
) 仅在服务器上。该接口可以在共享包中(例如 common.AdditionInterface
)。
我有以下 RMI 连接代码,其中 returns 出现 com.sun.proxy.$Proxy0 无法转换为 Client.AdditionInterface 错误。我创建了两个单独的包客户端和服务器,并将接口放入其中。这是我的完整代码:
package Serveur;
import java.rmi.*;
import java.rmi.registry.LocateRegistry;
public class AdditionServer {
public static void main (String[] argv) {
try {
LocateRegistry.createRegistry(1099);
Addition Hello = new Addition();
Naming.rebind("rmi://"+java.net.InetAddress.getLocalHost().getHostName()+"/ABC", Hello);
System.out.println("Addition Server is ready.");
}
catch (Exception e) {
System.out.println("Addition Server failed: " + e);
}
}
}
///////////////////////////////////
package Serveur;
import java.rmi.*;
import java.rmi.server.*;
public class Addition extends UnicastRemoteObject implements AdditionInterface {
public Addition () throws RemoteException {
super();
}
@Override
public int add(int a, int b) throws RemoteException {
int result=a+b;
return result;
}
@Override
public String aff(int a, int b) throws RemoteException {
return String.valueOf(add(a, b));
}
}
///////////////////////////
package Client;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface AdditionInterface extends Remote {
public int add(int a,int b) throws RemoteException;
public String aff(int a, int b) throws RemoteException;
}
///////////////////////////
package Client;
import java.rmi.*;
public class AdditionClient {
public static void main (String[] args) throws Exception {
AdditionInterface add = (AdditionInterface) Naming.lookup("rmi://"+java.net.InetAddress.getLocalHost().getHostName()+"/ABC");
System.out.println("Result is :"+add.add(9, 10));
System.out.println(add.aff(26, 45));
}
}
有什么帮助吗?谢谢。
对于客户端的 Client.AdditionInterface
和服务器的 Server.AdditionInterface
?实际上错误是说 Server.AdditionInterface cannot be cast to Client.AdditionInterface
.
使用 RMI,您必须在客户端和服务器上具有相同的接口 class,但显然服务器实现 class (AdditionServer
) 仅在服务器上。该接口可以在共享包中(例如 common.AdditionInterface
)。