在命令行和eclipse中运行RMI服务器

时间:2010-06-05 04:22:50

标签: java eclipse rmi

我需要使用命令行运行我的RMI服务器RmiEncodingServer) 我的类文件位于此文件夹中:

C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerClasses
hw2.rmi.server中的

。 代码库位于此文件夹中:

C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerCodeBase

hw2.rmi.server

我使用命令行:

java –classpath C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerClasses\ -Djava.rmi.server.codebase=file:/C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerCodeBase -Djava.security.policy=C:\workspace\distributedhw2\permissions.policy hw2.rmi.server.RmiEncodingServer

但是我得到了一个“未找到课程”的例外情况如下:

Exception in thread "main" java.lang.NoClassDefFoundError: ûclasspath
Caused by: java.lang.ClassNotFoundException: ûclasspath
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: GÇôclasspath.  Program will exit.

我哪里出错了?

另外,如果您可以提供有关如何在eclipse中运行服务器的说明,我将以下内容添加为VM参数,但是我在RmiServerCodeBase中的类中找到了一个类找不到异常:

-Djava.security.policy=C:\workspace\distributedhw2\permissions.policy -Djava.rmi.server.codebase=file:/C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerCodeBase

感谢

1 个答案:

答案 0 :(得分:1)

我发现问题在于我试图引用代码库中的 .java 文件,而不是 .class 文件,我想这个名称是“代码库“有点误导。因此,如果您想在RMI服务器中执行此操作,可以这样做:

String codeBasePath =  "file:/C:/workspace/distributedhw2/"
        + "AgencyServers/RmiEncodingServer/RmiServerClasses/";
        System.setProperty("java.rmi.server.codebase",codeBasePath);

或简单地将以下内容作为VM参数传递:

-Djava.security.policy=C:\workspace\distributedhw2\permissions.policy -Djava.rmi.server.codebase=file:/C:\workspace\distributedhw2\AgencyServers\RmiEncodingServer\RmiServerClasses