我需要使用命令行运行我的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
感谢
答案 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