gpt4 book ai didi

java - 使用 RMI 的 ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-01 10:18:51 25 4
gpt4 key购买 nike

我用 RMI 在 netbeans 中编写了一个程序,客户端出现错误

错误:

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: rmiserver.Message (no security manager: RMI class loader disabled) at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)

但是服务器没有任何错误!

接口(interface)代码:

 package rmiclient;

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

public interface Message extends Remote {
void sayHello(String name) throws RemoteException;
}

接口(interface)实现是:

 package rmiserver;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class MessageImpl extends UnicastRemoteObject implements Message {

public MessageImpl() throws RemoteException {
}

@Override
public void sayHello(String name) throws RemoteException {
System.out.println("hello "+name);
}

}

服务器代码是:

package rmiserver;  
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Main {

private void startServer(){
try {
// create on port 1099
Registry registry = LocateRegistry.createRegistry(1099);

// create a new service named myMessage
registry.rebind("myMessage", new MessageImpl());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("system is ready");
}

public static void main(String[] args) {
Main main = new Main();
main.startServer();
}
}

客户端代码是:

package rmiclient;
import java.rmi.RMISecurityManager;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Main {

private void doTest(){

try {

// fire to localhost port 1099
Registry myRegistry = LocateRegistry.getRegistry("127.0.0.1", 1099);


// search for myMessage service
Message impl = (Message) myRegistry.lookup("myMessage");

// call server's method
impl.sayHello("edwin");

System.out.println("Message Sent");
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
Main main = new Main();
main.doTest();
}
}

谢谢:)。

最佳答案

在你的堆栈跟踪中:

java.lang.ClassNotFoundException: rmiserver.Message

但根据您提供的数据,您的Message接口(interface)由包 package rmiclient; 声明并且您还没有创建任何 rmiserver.Message类。

更正包名称。

关于java - 使用 RMI 的 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35748302/

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