在看 RMI 源码的时候,发现 jdk 本身自带的 src.zip 其实只是部分 jdk 实现的源代码某些 如 sun.rmi.server.UnicastRef.java 是木有包含在上述 src.zip后来上网下载了 OpenJdk6 之后, 能看 UnicastRef.java 也能看 RegistryImpl但是另一个问题又出现了sun.rmi.registry.RegistryImpl_Stub.java 类似于这种的,好像是 RMI 底层关于代理存根的实现源码,却依然,看不到google 了一阵, 发现 gcc 上有一个同样类名的东东,唯一的差别就是,全名是 gnu.java.rmi.registry.RegistryImpl_Stub.java对 gcc 不甚了解,也不清楚这两个类之间有啥子关系现在的需求是,求高手指教如何找到 sun.rmi.registry.RegistryImpl_Stub.java 的 source code 并关联上谢!

解决方案 »

  1.   

    带 _Stub 后缀的应该是用rmic生成的(-keep选项)
      

  2.   

    import java.rmi.Remote;
    import java.rmi.RemoteException;
    public interface RObject extends Remote {
        void process() throws RemoteException;
    }import java.rmi.server.UnicastRemoteObject;
    import java.rmi.RemoteException;
    public class RObjectImpl extends UnicastRemoteObject implements RObject {
        public RObjectImpl() throws RemoteException {
            super();
        }
        public void process() throws RemoteException {    }
    }
    javac *.java
    rmic -keep RObjectImpl
    就会生成 RObjectImpl_Stub.java,RObjectImpl_Stub.class
      

  3.   

    这个是反编译吗还是什么?带有 Stub 后缀的,都是些什么类呢?有没有办法一次性生产所有的 Stub 的源码?