gpt4 book ai didi

java - JNI FindClass 导入失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:57 31 4
gpt4 key购买 nike

我正在尝试使用 JNI 从 C++ (ms vc 2008) 调用我的 java 类,但问题是 FindClass 仅在我的 java 类中没有导入包时才起作用。如果我添加任何包(例如 java.lang.String 或 java.io.File),FindClass 将失败并且不返回任何值。为什么?

C++ 代码://///////////////////////////////

JNIEnv *env;
JavaVM * jvm;
JavaVMInitArgs vm_args;
JavaVMOption options;
options.optionString = "-Djava.class.path=c:\\mypackage.jar";
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);
if(env == NULL)
printf("\nJVM Failed\n");

jclass cls = env->FindClass("mypackage/test/MyClass");

if(cls==0)
{
printf("\nFindClass Failed\n");
}

JAVA 代码://///////////////////////////////

package mypackage.test;

import java.io.File; //if I comment this row, FindClass works...

public class MyClass {

}

更新:

这是我的代码:http://www.sendspace.com/file/233tfm

  • 复制到C:\JNITest
  • 在项目的属性\调试设置中更改工作目录
  • 检查 JNI_test1.cpp 中的 optionString

非常感谢,里卡多

最佳答案

VM 找不到 rt.jar 和所有其他类。这question建议在设置其他选项之前运行 JNI_GetDefaultJavaVMInitArgs(&vm_args);

关于java - JNI FindClass 导入失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7090930/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com