JavaRMI-注册表绑定调用导致NoSuchObjectException

JavaRMI-注册表绑定调用导致NoSuchObjectException,java,exception,rmi,Java,Exception,Rmi,我有一个简单的程序,可以让calcPi()在Java RMI上可用, 当我启动程序时,出现以下异常: java.rmi.NoSuchObjectException: no such object in table at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source) at sun.rmi.transport.StreamRemoteCall.executeCall(Unk

我有一个简单的程序,可以让calcPi()在Java RMI上可用, 当我启动程序时,出现以下异常:

java.rmi.NoSuchObjectException: no such object in table
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
    at server.CalculatePi.main(CalculatePi.java:24)
这是我的代码,在界面下方:

public class CalculatePi implements ICalculatePi {
    @Override
    public Double calcPi() throws RemoteException{
    return 3.141259;
}

public static void main(String[]args){
    if(System.getSecurityManager()==null){
        System.setProperty("security.policy","file:./security.policy");
    }
    try{

        String name="Pi-Rechner";
        ICalculatePi rechner=new CalculatePi();
        ICalculatePi stub=(ICalculatePi) UnicastRemoteObject.exportObject(rechner, 0);
        Registry myRegistry=LocateRegistry.getRegistry();
        myRegistry.rebind(name,stub);
        System.out.println("Rechner gebunden!");
    }catch(Exception e){
        e.printStackTrace();
    }
}
}

这是我的界面:

package server;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ICalculatePi extends Remote {
    public Double calcPi() throws RemoteException;
}
编程时,我遵循了教程:


如果有人得到了一个好的简单的解决方案,谢谢

您的系统上正在运行另一个RMI进程,该进程在端口1099上导出,但它不是RMI注册表。找到该进程,杀死它,然后运行RMI注册表(通常是
rmiregistry
命令)