2

我一直在尝试执行命令来运行 RMI Hello world 示例,但我失败了!

我的执行步骤取自这里:http ://docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html

命令是:

  • javac:工作正常,我得到类文件
  • rmiregistry &: 我得到类似的东西[1] 17122
  • java -Djava.rmi.server.codebase=file:/users/ha/RMI/ example.hello.Server

给我一条错误信息

线程“main”中的异常 java.lang.NoClassDefFoundError: example/hello/Server 原因是:java.lang.ClassNotFoundException: example.hello.Server at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java。 security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass( Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247)

4

3 回答 3

3

我确实通过在新的终端窗口上运行每个命令来解决这个问题。首先,我从 .java 文件的 javac 开始,然后运行命令 rmiregistry &。

其次,我打开了一个新的终端窗口并为 Server 类运行命令 java。

第三,我打开了一个新的终端窗口并为 Client 类运行命令 java。

它适用于我!

于 2012-12-16T21:05:14.967 回答
0

在 Mac 上,根目录中的 Users 目录用大写字母书写。

你写了:

文件:/用户/ha/RMI/

文件:/用户/ha/RMI/ 将是正确的。这仅适用于已明确设置为忽略大小写(不区分大小写)的文件系统。至少下面的评论是这么说的。我自己无法验证这一点。

在许多情况下也需要类路径。这取决于您的依赖项。但是,如果您需要 Windows 中的类路径,您将需要在 Mac 上类似的路径。

根据您的 .class 文件所在的位置,我会将类路径添加到您的调用中。

java -Djava.rmi.server.codebase=file:/users/ha/RMI/ -cp=/Users/ha/RMI example.hello.Server

当然,这假设类文件位于 /Users/ha/RMI/example/hello

只需查看目录内部以验证类文件是否存在。它应该是您在 javac 命令和 -d 参数之后指定的目录。

于 2012-12-07T10:24:52.507 回答
0

我使用三个终端窗口来执行 rmiregistry 程序。

1.使用此终端窗口编译所有文件(javac 文件名.java)并使用命令“rmiregistry &”这是“启动 rmiregistry”的 windows 等效命令。(注意:'start' 命令在 macOS 上不起作用)

2.使用它来运行java文件,即。服务器文件(即 java RMI_Server)

3.使用它来运行客户端文件,即。客户端文件(即 java RMI_Client 127.0.0.1)

是的,它对我有用。(注意:Directory 应该在终端中正确设置)

于 2020-10-06T03:41:15.910 回答