Eclipse希望实现不存在的方法

时间:2018-01-18 18:21:47

标签: java eclipse interface

我有一个应用程序,我一直在尝试使用Java 8的RMI。我在Windows 10上使用eclipse Neon.3,它抱怨我没有实现不存在的接口方法。在试图缩小一个单独的问题时,我已经注释掉了界面的一种抽象方法。

在注释掉一个抽象方法之后,接口被导出到一个jar文件中;然后将jar文件添加到将实现该接口的服务器应用程序的构建路径中。

界面:

package accessService;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.HashMap;

public interface ApplicationAccessService extends Remote{

//public void                   connectClient(Long[] clientId)      throws RemoteException;
public HashMap<String, Long>    getClientConnections()              throws RemoteException;
public HashMap<String, Integer> getServerConnections()              throws RemoteException;

}

实施班:

package iap.util;

import java.rmi.RemoteException;
import java.util.HashMap;

import accessService.ApplicationAccessService;

public class RemoteIAP implements ApplicationAccessService{

private final static HashMap<String, Integer>   SERVERS     = new HashMap<>();
private final static HashMap<String, Long>      CLIENTS     = new HashMap<>();

public RemoteIAP(){ }

//methods used by RMI interface--------------------------------------   
@Override
public HashMap<String, Integer> getServerConnections() throws RemoteException {
    return SERVERS;
}

@Override
public HashMap<String, Long> getClientConnections() throws RemoteException {
    return CLIENTS;
}
//end RMI methods-------------------------------------------------------
}

错误:

The type RemoteIAP must implement the inherited abstract method ApplicationAccessService.connectClient(Long[])

在我看来,在评论出有问题的方法之前,日食会以某种方式维护文物。重新启动eclipse并重新启动我的电脑没有改变这种行为。我不知道这是不是java的问题,我是使用eclipse中的上下文菜单将界面添加到构建路径的方式,还是其他什么?

2 个答案:

答案 0 :(得分:1)

我认为取出线然后导出可能会失败。理解.jar中,编译的.class文件中的代码很重要,而不是.java文件中的代码。因此,如果您在导出之前没有重新编译,则可以在.jar中使用旧版本

答案 1 :(得分:1)

有时,ide可以读取旧编译的.class文件,并且在构建操作之后它不会以新文件替换。

更改班级名称并重新构建。