无法加载JVM

时间:2013-04-08 07:09:15

标签: java c++ jvm java-native-interface dependencies

我正在尝试使用从here获取的代码从C运行java代码。尝试运行JVM的代码如下:

JNIEnv *env;
    JavaVMInitArgs vm_args;
    JavaVMOption options;
    options.optionString = "-Djava.class.path=D:\\Java Src\\TestStruct";
    vm_args.version = JNI_VERSION_1_6;
    vm_args.nOptions = 1;
    vm_args.options = &options;
    vm_args.ignoreUnrecognized = 0;

    int ret = JNI_CreateJavaVM(jvm, (void**)&env, &vm_args);

代码编译正常但是,当我尝试执行它时,我收到以下错误:

  

VM初始化期间发生错误无法加载本机   library:找不到依赖库

查看this问题我使用了依赖walker来找出我错过的二进制文件。事实证明我在计算机上缺少ieshims.dllwer.dll,根据this提到的dll用于vista及以上(我在XP上)。
所以我想到了几个问题:

  • 我该如何摆脱这个?
  • 为什么我首先得到这个错误?我不能在XP中加载JVM吗?

我在Windows XP上,使用Visual Studio 2008,安装了JDK 1.7(也尝试过1.6)。

2 个答案:

答案 0 :(得分:5)

在你链接的文章下面的讨论主题中有类似的问题。

在那里,用户发现解决方案是确保在PATH环境变量中具有Java二进制文件的路径。例如:

PATH = "C:\Program Files\Java\jdk1.6.0_18\jre\bin\client";...

答案 1 :(得分:3)

还有另一种方法 - 您可以从自定义位置动态加载jvm.dll,并设置指向本机库的java.library.path变量。这样就不必依赖于系统env PATH。

以下是其他帖子中的示例:

Creating JVM using JNI in C++ does not return