Oracle Java SE JRE中的本机类位于何处?
我正在研究java标准库类,并意识到有些方法使用了关键字Oracle Java SE JRE中的本机类位于何处?,java,oracle,Java,Oracle,我正在研究java标准库类,并意识到有些方法使用了关键字native,如下代码所示: public class FileOutputStream extends OutputStream{ private native void open0(String name, boolean append) throws FileNotFoundException; } 我已经搜索并发现它与jniapi相关,它必须在非java类文件中调用一个方法。但是,我找
native
,如下代码所示:
public class FileOutputStream extends OutputStream{
private native void open0(String name, boolean append)
throws FileNotFoundException;
}
我已经搜索并发现它与jniapi
相关,它必须在非java类文件中调用一个方法。但是,我找不到这个文件。在这个案例中它位于哪里?
Tks本机方法不委托给“方法”,而是委托给本机函数,本机函数不驻留在任何类型的类文件中。而是在特定于平台的动态链接库中。要在JDK中找到给定本机方法的C/C++源代码,您必须克隆OpenJDK的Mercurial存储库,并花一些时间在浩瀚的代码库中找到方向。我建议经常使用
find
+grep
另外,Oracle SE与OpenJDK不同,但它们共享99%的代码库。此外,由于特定于Oracle的增量是封闭源代码的,因此这当然是您最好(如果不是唯一)的选择