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

问题描述 投票:0回答:1

这个问题在这里已有答案:

编辑:所以即使将它们全部更改为同一个包,仍然会收到错误。所以没有包相关。

我正在为学校做一个RMI客户端/服务器项目。老师说服务器/客户端必须在不同的包中,我相信这就是我遇到这个问题的原因。只是要省略空间的错误处理(try / catch)。服务器运行良好。我认为服务器和客户端位于两个不同的软件包中会导致问题,但不确定如何实际修复它,因为服务器和客户端位于两个不同的位置(计算机)。

完整的错误消息是

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");
}

}
java rmi
1个回答
0
投票

希望有人可以通过从错误中吸取教训来节省一些时间。问题是一个包问题,但最终是由于在客户端包下编译的剩余接口。

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

这里要吸取的教训是什么?如果进行结构更改或遇到问题,请暂时删除一次类文件。绝对感到愚蠢的斗争这么久。

© www.soinside.com 2019 - 2024. All rights reserved.