我正在尝试使用从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.dll
和wer.dll
,根据this提到的dll用于vista及以上(我在XP上)。
所以我想到了几个问题:
我在Windows XP上,使用Visual Studio 2008,安装了JDK 1.7(也尝试过1.6)。
答案 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。
以下是其他帖子中的示例: