我使用 rmi 类,但我有一个问题。我的接口名称是server
,我的实现类的名称是serverImpl
. 当我输入rmic -v1.2 -classpath .. serverImpl
命令行时(在编译接口和类之后)它显示这个错误:
error: Class serverImpl not found.
我检查serverImpl
了指定目录中是否存在。
将您的服务器类和实现的类放在一个文件夹中,命名它x
在每个类的顶部添加这个包package x;
打开 cmd 并从包含该文件夹的目录中写入javac x/MyServer.java
和。javac x/MyImpl.java
x
rmic x.MyServer
从包含该文件夹的目录写入x
。
你现在应该有一个MyServer_stub.class
,你可以有一个美好的一天:)
PS:包名与 RMI 或类中使用的任何对象不同,这一点很重要。否则你会发生物体碰撞。
serverImpl
不必“存在于指定目录中”。你没有指定一个目录,你已经指定了一个 CLASSPATH,并且serverImpl
必须存在于其中,在适当的包结构下,你还必须在命令行中正确命名。因此,如果serverImpl
在 packagex.y
中,则必须指定包含 x/y 目录的 CLASSPATH,并x.y.serverImpl
在命令行中指定。与使用“java”命令运行时完全一样。
rmic
但是大约八年来您根本不需要- 请参阅 Javadoc 类UnicastRemoteObject
。
请将斜杠 (/) 转换为点 (.)。它对我有用。
我有以下结构
rmitest/
rmitest/MyRemoteIf.java
rmitest/MyRemoteImpl.java
javac rmitest/*.java
rmic rmitest.MyRemoteImpl
输出是:
rmitest/MyRemoteIf.class
rmitest/MyRemoteImpl.class
rmitest/MyRemoteImpl_Stub.class
rmitest/MyRemoteImpl_Skel.class
祝你好运!!卡兰