我需要使用命令行运行我的 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
谢谢
最佳答案
我发现问题是我试图引用代码库中的 .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
关于java - 在命令行和 Eclipse 中运行 RMI 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2979146/