Java 运行可执行jar文件时未找到类错误(使用eclipse导出的RMI应用程序)
我有一个项目需要一个RMI应用程序。 当我能够在eclipse下成功地测试它们时(使用),我尝试使用eclipse的导出功能将它们导出为jar文件 问题是只有一个应用程序可以很好地处理导出的jar文件Java 运行可执行jar文件时未找到类错误(使用eclipse导出的RMI应用程序),java,jar,rmi,Java,Jar,Rmi,我有一个项目需要一个RMI应用程序。 当我能够在eclipse下成功地测试它们时(使用),我尝试使用eclipse的导出功能将它们导出为jar文件 问题是只有一个应用程序可以很好地处理导出的jar文件 java -jar registry.jar java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error
java -jar registry.jar
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: common.Registry <-- ???
temp> unzip registry.jar
Archive: registry.jar
inflating: META-INF/MANIFEST.MF
creating: client/
inflating: client/ChatClientImpl.class
creating: common/
inflating: common/ChatRoomProvider.class
inflating: common/Entity.class
inflating: common/ChatRoomServer.class
inflating: common/ChatClient.class
inflating: common/Registry.class <<<---
这是发生错误的代码:
try {
// clients and providers can access with the name Registry
Naming.rebind("Registry", new RegistryImpl()); <--
} catch (Exception e) {
e.printStackTrace();
}
我可以显式地指向代码库目录,但jar文件中已经有相同的代码 当我执行RMI寄存器并设置代码库所在的类路径时,这个问题得到了解决
java -jar registry.jar
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: common.Registry <-- ???
temp> unzip registry.jar
Archive: registry.jar
inflating: META-INF/MANIFEST.MF
creating: client/
inflating: client/ChatClientImpl.class
creating: common/
inflating: common/ChatRoomProvider.class
inflating: common/Entity.class
inflating: common/ChatRoomServer.class
inflating: common/ChatClient.class
inflating: common/Registry.class <<<---
export CLASSPATH=SOMEWHERE_THE_LOCAL_BASE_IS_LOCATED
rmiregistry