java - 没有找到适合 UnicastRemoteObject() 的构造函数

标签 java constructor rmi

从 javase api 8 开始,rmic 已被弃用。因此,通过将对象导出为动态生成 stub 是首选:

  1. 子类化 UnicastRemoteObject 并调用 UnicastRemoteObject() 构造函数。
  2. 子类化 UnicastRemoteObject 并调用 UnicastRemoteObject(port) 构造函数。

所以我首先调用了 UnicastRemoteObject(port) 构造函数,但得到了编译错误: 没有为 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 中,那么为什么编译器会给出错误?

最佳答案

  1. Subclassing UnicastRemoteObject and calling the UnicastRemoteObject() constructor.

错了。这样做需要rmic

  1. Subclassing UnicastRemoteObject and calling the UnicastRemoteObject(port) constructor.

正确。您遗漏了几个案例:

  • 子类化 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);
    }
    

    这是相当基本的。

    关于java - 没有找到适合 UnicastRemoteObject() 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38286096/

    相关文章:

    java - 在java中的arrayList中生成动态对象名称

    java - 带部分键的 Hibernate 查询

    java - 文件未找到异常 --- 将文件引用传递给 RMI 客户端时出现问题

    java - 将第三方库与 Maven 一起使用

    使用 EasyMock+PowerMock 模拟静态方法时出现 java.lang.ExceptionInInitializerError

    c++ - 在 C++ 的类构造函数中初始化结构数组

    python - 构造函数(Python)之外的方法中的实例变量 - 为什么以及如何?

    JavaScript:这个构造函数有什么问题?

    java - 从基于 Web 的应用程序到基于桌面的应用程序的通信

    java - 如何在Java中进行并行编程?