解决方案 »

  1.   

    应该包含在Java可执行文件中,具体的实现是由操作系统决定。
      

  2.   

    如果在Windows操作系统下,可以用下面的方法研究一下1)安装完整的Microsoft Visual Studio C++
    这个步骤主要是要获得dumpbin.exe这个可执行文件
    我的机器上这个文件在下面这个位置
    C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\dumpbin.exe2)执行下面这样的命令
    dumpbin/EXPORTS "C:\Program Files\Java\jdk1.8.0\bin\msvcr100.dll"
    dumpbin/EXPORTS "C:\Program Files\Java\jdk1.8.0\jre\bin\java.dll" 3)会得到类似下面这样的结果
    Dump of file C:\Program Files\Java\jdk1.8.0\bin\msvcr100.dll
      Section contains the following exports for MSVCR100.dll
           1331  532 00082FCC atanDump of file C:\Program Files\Java\jdk1.8.0\jre\bin\java.dll
      Section contains the following exports for java.dll
            156   9B 00006018 Java_java_lang_StrictMath_atan4)这样就能推断出,java.exe或者javaw.exe在运行的时候,通过调用java.dll来提供本地方法
    而这些本地方法的实现,有可能是在msvcr100.dll里实现的【在Windows平台,Oracle调用的微软的具体实现】5)至于java.dll和MSVCR100.dll之间的相互依赖关系
    可以用【Dependency Walker】工具打开java.dll查看如果你觉得1到4的过程过于麻烦,只想查看结果的话
    可以只下载【http://www.dependencywalker.com/】(600K左右)
    打开你自己机器上的java.dll就马上能明白了