java rmi客户端异常

时间:2009-09-29 18:26:54

标签: java rmi

我正在写一个rmi应用程序。当我将所有类放在一个目录(一个包)中时,一切都很好。但是,当我尝试拆分服务器部分和客户端部分时,客户端会发生异常。服务器工作正常。 以下是异常发生后堆栈跟踪的一部分:

Exception in thread "main" 
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
        java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
        java.lang.ClassNotFoundException: com.clientpackage.ClientImpl_Stub (no security manager: RMI class loader disabled)

我使用unicastRemoteobject方法从客户端向服务器传递一个对象实例以进行回调。我还使用rmic生成对象的存根文件。看来该程序无法在其CLASSPATH上找到该stub类。我想知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

问题是您使用的是rmic。除非您在 Java 5之前使用严格的Java版本,否则不建议这样做。

Java 5及更高版本将动态生成存根。只有在必须支持Java 1.4或更早版本的客户端时才需要使用rmic

在Java 5及更高版本中,如果存根是使用rmic生成的,并且存在于服务器的类路径中,则客户端将尝试通过RMI类加载器加载它们, 即使它们已经在客户端的类路径上可用。

此外,如果您不打算使用RMI类加载器,则无需设置服务器代码库。