没有找到适合 UnicastRemoteObject() 的构造函数
no suitable constructor found for UnicastRemoteObject()
自 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) 不适用
(实际和形式参数列表的长度不同)
我的问题是,当 java.rmi.server.UnicastRemoteObject
出现在 javase8 api 中时,为什么编译器会报错?
- Subclassing UnicastRemoteObject and calling the UnicastRemoteObject() constructor.
错了。这样做需要 rmic
.
- Subclassing
UnicastRemoteObject
and calling the UnicastRemoteObject(port)
constructor.
正确。您遗漏了几个案例:
Subclassing UnicastRemoteObject
并调用 UnicastRemoteObject(int, RMIClientSocketFactory, RMIServerSocketFactory)
构造函数(可能是相反的方式)。
Not subclassing UnicastRemoteObject
并调用 UnicastRemoteObject.exportObject(Remote, int)
方法。
不是 subclassing UnicastRemoteObject
并调用 UnicastRemoteObject.exportObject(Remote, int, RMIClientSocketFactory, RMIServerSocketFactory)
方法(同样可能是相反的方式)。
编辑
MyServer()throws RemoteException {
new UnicastRemoteObject(5000);
}
这不是调用基础 class 构造函数的方式。正确的形式是:
MyServer() throws RemoteException {
super(5000);
}
这是相当基础的。
自 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) 不适用 (实际和形式参数列表的长度不同)
我的问题是,当 java.rmi.server.UnicastRemoteObject
出现在 javase8 api 中时,为什么编译器会报错?
- Subclassing UnicastRemoteObject and calling the UnicastRemoteObject() constructor.
错了。这样做需要 rmic
.
- Subclassing
UnicastRemoteObject
and calling theUnicastRemoteObject(port)
constructor.
正确。您遗漏了几个案例:
Subclassing
UnicastRemoteObject
并调用UnicastRemoteObject(int, RMIClientSocketFactory, RMIServerSocketFactory)
构造函数(可能是相反的方式)。Not subclassing
UnicastRemoteObject
并调用UnicastRemoteObject.exportObject(Remote, int)
方法。不是 subclassing
UnicastRemoteObject
并调用UnicastRemoteObject.exportObject(Remote, int, RMIClientSocketFactory, RMIServerSocketFactory)
方法(同样可能是相反的方式)。
编辑
MyServer()throws RemoteException {
new UnicastRemoteObject(5000);
}
这不是调用基础 class 构造函数的方式。正确的形式是:
MyServer() throws RemoteException {
super(5000);
}
这是相当基础的。