我使用rmi类,我有一个问题。我的界面名称为server
,我的实现类名称为serverImpl
。当我在命令行中输入rmic -v1.2 -classpath .. serverImpl
时(在编译接口和类之后),它会显示以下错误:
error: Class serverImpl not found.
我检查了指定目录中是否存在serverImpl
。
答案 0 :(得分:6)
将您的服务器类和已实现的类放在一个文件夹中,将其命名为x
在每个班级package x;
打开cmd并从包含javac x/MyServer.java
文件夹的目录中写入javac x/MyImpl.java
和x
。
从包含rmic x.MyServer
文件夹的目录中写下x
。
你现在应该有一个MyServer_stub.class
,你可以度过愉快的一天:)
PS:包名称与RMI或类中使用的任何对象不同是很重要的。否则你会发生物体碰撞。
答案 1 :(得分:0)
serverImpl
不必存在于指定目录中。您尚未指定目录,您已指定了CLASSPATH,并且必须在相应的包结构中存在serverImpl
,您必须在命令行中正确命名。因此,如果serverImpl
位于包x.y
中,则必须指定包含x / y目录的CLASSPATH,并在命令行上指定x.y.serverImpl
。正如您使用'java'命令运行时一样。
但是大约八年你根本不需要rmic
- 请参阅UnicastRemoteObject
的Javadoc课程。
答案 2 :(得分:-2)
请将斜杠(/)转换为点(。)。它对我有用。
我有以下结构
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
祝你好运!
卡兰