我正在构建通过JNI运行java的MS VC ++项目。我在我的电脑上安装了几个java版本(jdk1.4
和jre7
)。
环境变量:
JAVA_HOME=C:\Program Files (x86)\Java\jre7
PATH=...
C:\Program Files (x86)\Java\jre7\jre\bin\server
C:\Program Files (x86)\Java\jre7\bin
C:\Program Files (x86)\Java\jre7\lib
C:\Program Files (x86)\Java\jre7\include
C:\Program Files (x86)\Java\jre7\include\win32
...
当我试图静态调用java时,它试图从jdk1.4加载jvm.dll并崩溃(这是第二个问题)。我知道它正在搜索jdk1.4,因为如果我重命名jdk1.4安装direcory项目告诉无法启动因为jvm.dll缺失。为什么项目正在寻找jdk1.4?我已将环境变量设置为jre7路径。
如果我动态加载java,通过告诉加载哪个精确的dll,一切都很顺利。
动态加载:
...
HINSTANCE ghDllInstance = LoadLibrary(L"C:\\Program Files (x86)\\Java\\jdk1.7.0_01\\jre\\bin\\server\\jvm.dll");
...