存根可执行RMI JAR文件的ClassNotFoundException(Executable R

2019-10-19 05:08发布

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

然而,当我试图创建一个JAR文件每个程序的,我得到了一个ClassNotFoundException: ChatImpl_Stub导致RemoteException上执行。

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

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

当聊天RMI-常见的是含有聊天界面客户端的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

当出现异常Naming.rebind功能,涉及ChatImpl,被称为(在节目的开头)。

我的安全策略:

grant {
    permission java.security.AllPermission;
}

那我还是忘了? 在此先感谢您的时间。

Answer 1:

具有堆栈跟踪好好看看。 注册表无法找到类。 它需要在注册表中的CLASSPATH。 所以,你要么需要开始用正确的JAR注册表上的CLASSPATH,或者更好的是启动它的服务器JVM内部,LocateRegistry.createRegistry()。



文章来源: Executable RMI JAR file ClassNotFoundException for Stub