java.rmi.ServerException : RemoteException occurred in server thread; ClassNotFoundException

标签 java rmi

当我通过 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 rmiregistry”即可启动 RMI 注册表。将打开一个标题为“c:\Program Files\Java\jdk1.7.0\bin\rmiregistry.exe”的新窗口。在这条路径中只有我有 JDK。

我的所有 .class 文件都在此路径中可用:D:\Workspace\Study\bin\com。

在 com 文件夹下,我拥有所有三个文件“RMIInterface、RMIServer、RMIClient”。

当我从 eclipse 运行服务器代码时,出现上述异常。(即)未找到 RMIInterface。但我把它放在同一个文件夹中。

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

这是我的服务器代码:

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();
    }

最佳答案

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

正如您所说,在 com 文件夹下,我拥有所有三个文件“RMIInterface、RMIServer、RMIClient”。

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

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

我希望你明白我的意思。

编辑

运行 RMI 程序时,我们确实需要运行 rmiregistry。

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

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

尝试在 CMD 中rmiregistry启动 rmiregistry。从 CMD 运行时,我们确实需要从运行 javacjava 的同一文件夹/包启动 rmiregistry。如果是 Eclipse,我想您应该尝试从 com 文件夹运行 rmiregistry。

更新

我认为到目前为止您正在尝试从 com 文件夹内启动 rmiregistry。只需尝试从您的 com 文件夹中启动它即可。

尽管 D:\Workspace\Study\bin\com>启动 rmiregistry

尝试

D:\Workspace\Study\bin\start rmiregistry

关于java.rmi.ServerException : RemoteException occurred in server thread; ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597723/

相关文章:

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

Java Scanner 抛出一些我没见过的错误

Java RMI : Determining Caller process from Callee

java - Head First Java - RMI 问题

java - 为什么我的 3n+1 解决方案不起作用?

java - RMI 服务器不会从其 HTTP 代码库服务器动态加载缺失的类

java - RMI 和 JMX 套接字工厂

java - Liferay 页面重定向

java - 转换对象的类

java - 仅比较 Java 中数字字符串的初始部分