Java的。 JNI。的jvm.dll

时间:2012-12-16 19:18:18

标签: java java-native-interface

我有Visual Studio C ++ Project,它必须调用一些java功能。我打算用JNI。我已经指定了其他包含目录:

C:\Program Files (x86)\Java\jdk1.7.0_10\include

C:\Program Files (x86)\Java\jdk1.7.0_10\include\win32

和其他图书馆目录

C:\Program Files (x86)\Java\jdk1.7.0_10\lib

并能够编译所需的代码。但由于下一个错误,我仍然无法运行它:

The program can't start bacause jvm.dll is missing...

我认为,最简单的方法就是将dll复制到项目目录中。但我不知道哪一个。例如,我发现它们很少有不同之处:

C:\Program Files (x86)\Java\jdk1.7.0_10\jre\bin\client\jvm.dll

C:\Program Files (x86)\Java\jdk1.7.0_10\jre\bin\server\jvm.dll

C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll

那么,我应该复制哪一个?

1 个答案:

答案 0 :(得分:4)

您正试图在错误的一端解决问题。您不应该复制jvm.dll,而是设置正确的JAVA_HOME环境变量,指向C:\Program Files (x86)\Java\jdk1.7.0_10\C:\Program Files (x86)\Java\jre7\。然后,java参数-client-server选择DLL的版本(没有参数时默认)。

更新:现在重新阅读这个问题,我看到该场景正在运行本机程序并从中调用JVM,而不是(更常见)从JVM调用本机lib。在这种情况下,本机程序确实需要访问jvm.dll。从JVM调用本机lib时,jvm.dll已经由JVM预加载,而本机库不需要关心它。