1.把应用打包(打成可执行的jar),有打包前生成代理/存根(xx_Skel.class/_Stub.class)了吗?包中必需有这两个class文件,RMI才可以正常运行。
在JB中配置生成代理/存根操作如下:
JB-->工程栏-->选中要生成代理/存根的java文件-->右击-->Properties-->Build-->选中Generate RMI Stub/Skelecton(Option参数楼主可以自己作选择)2.通过代码来注册RMI服务端口,只要程序不停Registry也不会自动停,程序结束时,Registry会自动注销。
java.rmi.registry.LocateRegistry.createRegistry(10000);
在JB中配置生成代理/存根操作如下:
JB-->工程栏-->选中要生成代理/存根的java文件-->右击-->Properties-->Build-->选中Generate RMI Stub/Skelecton(Option参数楼主可以自己作选择)2.通过代码来注册RMI服务端口,只要程序不停Registry也不会自动停,程序结束时,Registry会自动注销。
java.rmi.registry.LocateRegistry.createRegistry(10000);
不是RMIRegistry的问题,因为在RMI运行的时候虚拟机会起动一个RMIServer来管理,
RMIServer并不知道当前的ClassPath,即使是代码中检索一个类是否可疑加载,但是
如果不指定RMIServer的ClassPath也是一样无法找到类的,这时RMI比较难搞的原因之一
如果能够,一个方法是在RMIRegister起动的时候指定Codebase这个是成功的,在注册
对象的时候指定,但是对于用户来说还是太过于复杂.
跟RMIServer没有直接的关系。