有 Java 编程相关的问题?

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

Mac OS X Lion中的java运行RMI Hello world失败

我一直在尝试执行命令来运行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

给我一个错误信息

Exception in thread "main" java.lang.NoClassDefFoundError: example/hello/Server Caused by: 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) at java.lang.ClassLoader.loadClass(ClassLoader.java:247)


共 (3) 个答案

  1. # 1 楼答案

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

    你写道:

    file:/users/ha/RMI/

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

    在许多情况下也需要类路径。这取决于你的依赖性。但是如果你在windows中需要类路径,你在Mac上也需要一个类似的类路径

    取决于你在哪里。类文件是,我会将类路径添加到调用中

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

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

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

  2. # 2 楼答案

    我使用了三个终端窗口来执行注册程序

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

    二,。使用此选项运行java文件ie.Server文件(ie.java RMI_Server)

    三,。使用此选项运行客户端文件ie.client文件(ie.java RMI_client 127.0.0.1)

    是的,这对我很管用。(注意:应在终端中正确设置目录)

  3. # 3 楼答案

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

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

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

    而且它对我有效