Java RMI类com.sun.proxy。$ Proxy0无法强制转换为类client.MessageServerInt

时间:2019-02-24 05:12:53

标签: java rmi

编辑:因此,即使将它们全部更改为同一软件包,仍然会收到错误。因此与软件包无关。

我正在为学校做一个RMI客户端/服务器项目。老师说服务器/客户端必须放在不同的程序包中,我相信这就是为什么我遇到这个问题。只是要忽略空间的错误处理(尝试/捕获)。服务器运行正常。我认为服务器和客户端位于两个不同的程序包中会引起问题,但是由于服务器和客户端位于两个不同的位置(机器),因此不确定如何实际修复它。

完整的错误消息是

java.lang.ClassCastException: class com.sun.proxy.$Proxy0 cannot be cast to class client.MessageServerInt (com.sun.proxy.$Proxy0 and client.MessageServerInt are in unnamed module of loader 'app')

接口

package server;
import java.rmi.*

public interface MessageServerInt extends Remote {
public boolean auth();
}

服务器

package server;
import java.rmi.*;
import java.rmi.server.*;
class Server extends UnicastRemoteObject implements MessageServerInt {
public Server() throws RemoteException {

}

public boolean auth() {
return true;
}

public static void main(String args[]) {
MessageServerInt srv= new Server();
Naming.rebind("rmi://localhost:1099/Server", srv);
}
}

客户

package client;
import java.rmi.*;
import server.MessageServerInt;

public class Client {

public static void main(String args[]) {
MessageServerInt stub = (MessageServerInt)Naming.lookup("//localhost:1099/server");
}

}

1 个答案:

答案 0 :(得分:0)

希望有人可以通过学习我的错误来节省一些时间。 该问题是程序包问题,但最终归因于客户端程序包下编译的剩余接口。

因此,当我的客户端尝试访问rmi接口时,它遇到了重复项并释放了上述错误。

要在这里学习的课程?如果您进行结构更改或遇到问题,请不时删除您的班级文件。战斗了这么长时间绝对是愚蠢的。