Oracle Java SE JRE中的本机类位于何处?

时间:2015-08-02 18:30:41

标签: java oracle

我正在研究java标准库类,并意识到有些方法在下面的代码中使用了关键字native

     
    public class FileOutputStream extends OutputStream{

    private native void open0(String name, boolean append)
        throws FileNotFoundException;
}

我已经搜索过并发现它与JNI API有关,它必须在非java类文件中调用一个方法。但是,我找不到这个文件。在这种情况下它位于何处? TKS

1 个答案:

答案 0 :(得分:2)

本机方法不会委托给#34;方法"但是本机功能,它不会驻留在任何类型的文件中。相反,它位于特定于平台的动态链接库中。要在JDK中查找给定本机方法的C / C ++源代码,必须克隆OpenJDK的Mercurial存储库,并花一些时间在该代码库的广泛范围内。我建议大量使用find + grep

P.S。 Oracle SE与OpenJDK不同,但它们共享99%的代码库。此外,由于特定于Oracle的delta是闭源的,因此这肯定是您最好的(如果不是唯一的)赌注。