有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVA马绍尔群岛共和国。ServerException:服务器线程中发生RemoteException;ClassNotFoundException

当我通过eclipse运行服务器代码时,出现以下异常:

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: com.RMIInterface
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:413)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267)
    at sun.rmi.transport.Transport$1.run(Transport.java:177)

我只需在cmd行中键入“start RMI Registry”即可启动RMI注册表。新窗口打开,标题为“c:\Program Files\Java\jdk1.7.0\bin\rmiregistry.exe”。在这个路径中,只有JDK

我的一切。此路径中可用的类文件:D:\Workspace\Study\bin\com

在com文件夹下,我有三个文件“rminterface,RMIServer,RMIClient”

当我从eclipse运行服务器代码时,我得到了上面提到的异常。(即)未找到接口。但我把它放在同一个文件夹里

我还应该做些什么来运行服务器

这是我的服务器代码:

RMIServer serRef = new RMIServer();
try {
    RMIInterface inref = (RMIInterface)UnicastRemoteObject.exportObject(serRef, 0);
    Registry reg = LocateRegistry.getRegistry();
    reg.bind("ServerObj", inref); -------->Exception in this line
} catch (AlreadyBoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

共 (2) 个答案

  1. # 1 楼答案

    我认为问题在于你访问界面的方式

    正如你所说,Under the com folder I have all three files "RMIInterface, RMIServer,RMIClient".

    如果所有文件都在同一个包/文件夹中,那么为什么要写com.RMIInterface

    它应该是RMIInterface,因为您提到的方法是在当前com包中搜索另一个名为com的包

    我希望你明白我的意思

    编辑

    在运行RMI程序时,我们确实需要运行RMI注册表

    您应该在启动服务器程序之前运行rmiregistry

    尝试从控制台或windows中的CMD运行它

    在CMD中尝试rmiregistrystart rmiregistry。从CMD运行时,我们确实需要从运行javacjava的同一文件夹/包启动rmiregistry。在eclipse的情况下,我想您应该尝试从com文件夹运行rmiregistry

    更新

    我想你现在正试图从com文件夹中启动rmiregistry。只需尝试从com文件夹中启动它

    尽管 D:\Workspace\Study\bin\com>start rmiregistry

    试一试

    D:\Workspace\Study\bin\start rmiregistry

  2. # 2 楼答案

    Remote Server Error:RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: mathInterface
    

    要解决此错误非常简单,请执行以下步骤:

      例如,您的java文件考虑d驱动器< /LI>
    • 启动RMID注册表驱动器(示例D:\Start rmiregistry),然后不要在其他驱动器上启动RMI注册表,这将产生上述错误

    (无论文件位于何处,请启动rmiregistry

    参考:java.rmi.ServerException: RemoteException occurred in server thread (ClassNotFoundException)