参见博客
Native 方法在 Oracle Java 是不让看的。我们只能从 Openjdk 中看。我在编译好的 openjdk 源码的 build.log 中找到了一大堆 native 方法的编译 log,但是却没有发现它们到底最后被编译到哪了。而且挨个翻 Makefile 也是不太可能的(看不懂哈哈)。于是只能暴力一些了。找到 Openjdk 目录下的各种 libs,首先我的 jdk 在前一个博客也说过是 openjdk8。在 <yourjdk>/build/macosx-x86_64-normal-server-****/jdk/lib
下,有一大堆的 libs。我估计就是他们(逃)。但是怎么确认呢?请参加上方的 blog。执行那两个命令之中的任意一个。然后你就会得到一大堆的输出。然后随便找一个函数,直接在源码目录 yourjdk/jdk/src/share/native
目录下使用 grep -rn <method_name> .
就好了!然后发现确实能查到的!虽然不能一一对应就是了。不过这样也是大有进展,这样就可以直接调用人家写好的 Native 方法了~
外赠一个 shell 脚本来检查到底某个 native 方法被放到哪个 dylib 中去了:
|
|
随后我还是查看了 Makefile……
比如 libjava 的 output 指定的 Makefile 脚本在:
嗯嗯。还想要继续找的话,请各种使用 grep 命令会方便很多~