自javase api 8起,rmic
已弃用。因此,通过将对象导出为:
stubs
UnicastRemoteObject
进行子类化并调用UnicastRemoteObject()
构造函数。UnicastRemoteObject
进行子类化并调用UnicastRemoteObject(port)
构造函数。 所以我首先调用了UnicastRemoteObject(port)
构造函数但得到了编译错误: no suitable constructor found for UnicastRemoteObject(int)
然后我尝试调用UnicastRemoteObject()
构造函数,仍然得到相同的编译错误。什么可能出错?
编辑:我的代码:
import java.rmi.*;
import java.rmi.server.*;
public class MyServer extends UnicastRemoteObject implements MyRemote {
MyServer()throws RemoteException {
new UnicastRemoteObject(5000);
}
//Other methods...
}
确切的引用错误:
找不到适合UnicastRemoteObject(int)的构造函数 构造函数java.rmi.server.UnicastRemoteObject.UnicastRemoteObject()不适用 (实际和正式的参数列表长度不同) 构造函数java.rmi.server.UnicastRemoteObject.UnicastRemoteObject(int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory)不适用 (实际和正式的参数列表长度不同)
我的问题是,当javase8 api中存在java.rmi.server.UnicastRemoteObject
时,为什么编译器会出错?
答案 0 :(得分:1)
- 对UnicastRemoteObject进行子类化并调用UnicastRemoteObject()构造函数。
醇>
错误。这样做需要rmic
。
- 对
醇>UnicastRemoteObject
进行子类化并调用UnicastRemoteObject(port)
构造函数。
正确。你遗漏了几个案例:
对UnicastRemoteObject
进行子类化并调用UnicastRemoteObject(int, RMIClientSocketFactory, RMIServerSocketFactory)
构造函数(可能反之亦然)。
不继承UnicastRemoteObject
并调用UnicastRemoteObject.exportObject(Remote, int)
方法。
不对UnicastRemoteObject
进行子类化并调用UnicastRemoteObject.exportObject(Remote, int, RMIClientSocketFactory, RMIServerSocketFactory)
方法(同样可能反之亦然)。
修改强>
MyServer()throws RemoteException {
new UnicastRemoteObject(5000);
}
这不是你如何调用基类构造函数。正确的形式是:
MyServer() throws RemoteException {
super(5000);
}
这是相当基本的。