Stub的可执行RMI JAR文件ClassNotFoundException

时间:2014-01-08 16:41:03

标签: java jar rmi classnotfoundexception

我有一个可用的RMI服务器程序,我可以直接从.class文件编译和执行。

但是,当我尝试为每个程序创建一个JAR文件时,我得到一个ClassNotFoundException: ChatImpl_Stub导致RemoteException执行。

我的清单是(最后加一个空行):

Main-Class: Server
Class-Path: chat-RMI-common.jar

其中chat-RMI-common是包含客户端聊天界面的JAR文件。

我用:

成功创建了JAR
jar cvmf ..\MANIFEST.MF chat-RMI-server.jar *.class

服务器JAR确实包含ChatImpl_Stub。但是,当我尝试启动JAR文件时会出现异常:

java -Djava.rmi.server.codebase="file:chat-RMI-common.jar file:chat-RMI-server.jar"
    -Djava.security.policy=..\security.policy
    -jar chat-RMI-server.jar

当调用涉及ChatImpl的Naming.rebind函数时(在程序开头),会出现异常。

我的安全政策:

grant {
    permission java.security.AllPermission;
}

我还记得什么?提前感谢您的时间。

1 个答案:

答案 0 :(得分:1)

仔细查看堆栈跟踪。注册表找不到该课程。它需要在Registry的CLASSPATH上。因此,您需要在其CLASSPATH上使用正确的JAR启动Registry,或者更好地使用LocateRegistry.createRegistry()在服务器JVM中启动它。