问题描述
如题。翻java源码时看到本地方法,只在java类中看到方法声明,但怎么也找到dll具体实现。上网查也没有头绪,求教各位大神
解决方案
解决方案二:
应该包含在Java可执行文件中,具体的实现是由操作系统决定。
解决方案三:
如果在Windows操作系统下,可以用下面的方法研究一下1)安装完整的MicrosoftVisualStudioC++这个步骤主要是要获得dumpbin.exe这个可执行文件我的机器上这个文件在下面这个位置C:ProgramFiles(x86)MicrosoftVisualStudio11.0VCbindumpbin.exe2)执行下面这样的命令dumpbin/EXPORTS"C:ProgramFilesJavajdk1.8.0binmsvcr100.dll"dumpbin/EXPORTS"C:ProgramFilesJavajdk1.8.0jrebinjava.dll"3)会得到类似下面这样的结果DumpoffileC:ProgramFilesJavajdk1.8.0binmsvcr100.dllSectioncontainsthefollowingexportsforMSVCR100.dll133153200082FCCatanDumpoffileC:ProgramFilesJavajdk1.8.0jrebinjava.dllSectioncontainsthefollowingexportsforjava.dll1569B00006018Java_java_lang_StrictMath_atan4)这样就能推断出,java.exe或者javaw.exe在运行的时候,通过调用java.dll来提供本地方法而这些本地方法的实现,有可能是在msvcr100.dll里实现的【在Windows平台,Oracle调用的微软的具体实现】5)至于java.dll和MSVCR100.dll之间的相互依赖关系可以用【DependencyWalker】工具打开java.dll查看如果你觉得1到4的过程过于麻烦,只想查看结果的话可以只下载【http://www.dependencywalker.com/】(600K左右)打开你自己机器上的java.dll就马上能明白了