gpt4 book ai didi

Java RMI - 注册表绑定(bind)调用导致 NoSuchObjectException

转载 作者:行者123 更新时间:2023-12-01 13:44:43 25 4
gpt4 key购买 nike

我有一个简单的程序,可以使 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;
}

我在编程时遵循了教程:http://docs.oracle.com/javase/tutorial/rmi/implementing.html

感谢有人提供了一个好的且简单的解决方案!

最佳答案

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

关于Java RMI - 注册表绑定(bind)调用导致 NoSuchObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com