我正在研究java标准库类,并意识到有些方法在下面的代码中使用了关键字native
:
public class FileOutputStream extends OutputStream{
private native void open0(String name, boolean append)
throws FileNotFoundException;
}
我已经搜索过并发现它与JNI API
有关,它必须在非java类文件中调用一个方法。但是,我找不到这个文件。在这种情况下它位于何处?
TKS
答案 0 :(得分:2)
本机方法不会委托给#34;方法"但是本机功能,它不会驻留在任何类型的文件中。相反,它位于特定于平台的动态链接库中。要在JDK中查找给定本机方法的C / C ++源代码,必须克隆OpenJDK的Mercurial存储库,并花一些时间在该代码库的广泛范围内。我建议大量使用find
+ grep
。
P.S。 Oracle SE与OpenJDK不同,但它们共享99%的代码库。此外,由于特定于Oracle的delta是闭源的,因此这肯定是您最好的(如果不是唯一的)赌注。