Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java标准库如何与本机代码通信?_Java_Jvm_Java Native Interface_Jvm Hotspot - Fatal编程技术网

Java标准库如何与本机代码通信?

Java标准库如何与本机代码通信?,java,jvm,java-native-interface,jvm-hotspot,Java,Jvm,Java Native Interface,Jvm Hotspot,他们会用Mono的PInvoke吗?还是更像是在运行时启动之前注册的内部调用?java是否有一个基本库来处理诸如mscorlib.dll之类的本机调用?如果我想在C代码中调用JVM,它的库会查找.so/.dll文件吗?如果我静态链接所有的JRE本地库,会对Java标准库产生影响吗 他们使用JNI来调用特定平台的本机共享库,这与公开文档中所描述的完全一样 就从C代码调用JVM而言,JVM使用共享库(DLL、SO等)。快速搜索JDK 6源代码不会发现任何System.loadLibrary()的核心

他们会用Mono的PInvoke吗?还是更像是在运行时启动之前注册的内部调用?java是否有一个基本库来处理诸如mscorlib.dll之类的本机调用?如果我想在C代码中调用JVM,它的库会查找.so/.dll文件吗?如果我静态链接所有的JRE本地库,会对Java标准库产生影响吗

他们使用JNI来调用特定平台的本机共享库,这与公开文档中所描述的完全一样

就从C代码调用JVM而言,JVM使用共享库(DLL、SO等)。快速搜索JDK 6源代码不会发现任何System.loadLibrary()的核心本机支持(如Object、String等中的本机方法)。这对我来说意味着,这些方法的本机代码(从JRE/bin目录的内容来看,似乎在DLL中)是由java.exe(以及Windows中的javaw.exe)显式链接的


当我最后一次看这篇文章时,从C代码调用JVM的需求是JNI中一个有很好文档记录的部分——我强烈建议您参考该文档以进一步进行。我们甚至成功地为IBM as/400 Java 1.1 JVM编写了一个本机C包装器/加载器。

他们使用JNI,正如公开记录的那样,为特定平台调用本机共享库

就从C代码调用JVM而言,JVM使用共享库(DLL、SO等)。快速搜索JDK 6源代码不会发现任何System.loadLibrary()的核心本机支持(如Object、String等中的本机方法)。这对我来说意味着,这些方法的本机代码(从JRE/bin目录的内容来看,似乎在DLL中)是由java.exe(以及Windows中的javaw.exe)显式链接的


当我最后一次看这篇文章时,从C代码调用JVM的需求是JNI中一个有很好文档记录的部分——我强烈建议您参考该文档以进一步进行。我们甚至成功地为IBM as/400 Java 1.1 JVM编写了本机C包装器/加载器。

他们使用Java本机接口(JNI)


我从未从C调用过JVM,所以我不知道这一点。

他们使用Java本机接口(JNI)


我从未从C调用过JVM,所以我不知道这一点。

这里有一个关于如何从C程序内部启动JVM的示例:


这里有一个关于如何从C程序内部启动JVM的示例:

“提供Java程序轻松访问本机共享库(Windows上的DLL),而无需编写Java代码”(引用自其主页)

到目前为止,我个人从未尝试过。

“提供Java程序轻松访问本机共享库(Windows上的DLL),而无需编写Java代码”(引用自其主页)

到目前为止,我个人从未尝试过