3

我正在构建通过 JNI 运行 java 的 MS VC++ 项目。我在我的电脑(jdk1.4jre7)上安装了几个 java 版本。

环境变量:

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 安装目录项目会告诉无法启动,因为缺少 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");
...
4

0 回答 0