本人有一个应用,需要支持RMI高调用,我提供了一个接口,其他人实现我的接口,并把用rmic编译后得到的stub文件给我,我这边负责调用。由于不希望他的程序修改后,我的也重新启动,我想动态加载stub文件,就是他把stub文件给我后,我打包成jar,我的程序用URLClassLoader动态载入,URL url = new URL("file:/d:/test/remoteobjs/remote1.jar");
URLClassLoader stubClassLoader = new URLClassLoader(new URL[]{url);
stubClassLoader.loadClass("hello.HelloImpl_Stub");载入是没问题的,不然应该会报ClassNotFoundException,但是下面的调用就报错了,
Hello obj = (Hello) Naming.lookup("rmi://ip:1099/HelloServer");
String message = obj.sayHello();java.lang.ClassNotFoundException: hello.HelloImpl_Stub如果我是把remote1.jar放到classpath中,运行正常。那是不是说,通过URLClassLoader载入的class,没有在整个ClassPath中可见?有什么办法?感谢各位先。