编辑:因此,即使将它们全部更改为同一软件包,仍然会收到错误。因此与软件包无关。
我正在为学校做一个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");
}
}
答案 0 :(得分:0)
希望有人可以通过学习我的错误来节省一些时间。 该问题是程序包问题,但最终归因于客户端程序包下编译的剩余接口。
因此,当我的客户端尝试访问rmi接口时,它遇到了重复项并释放了上述错误。
要在这里学习的课程?如果您进行结构更改或遇到问题,请不时删除您的班级文件。战斗了这么长时间绝对是愚蠢的。