C++ 调用jar包 找不到类
最近有个任务,需要用C++调用jar包里面的类,但是发现找不到类。 希望大神们可以帮忙分析一下。 以下是初始化JVM虚拟机的,在classpath上,把tools.jar,dt.jar,rt.jar 都包含进去了
options[0].optionString = "-Djava.compiler=NONE"; options[1].optionString = "-Djava.class.path=./my.jar;D:\Program Files\Java\jdk1.6.0_31\lib\tools.jar;D:\Program Files\Java\jdk1.6.0_31\lib\dt.jar;D:\Program Files\Java\jdk1.6.0_31\jre\lib\rt.jar"; options[2].optionString = "-verbose:jni"; //用于跟踪运行时的信息 memset(&vm_args, 0, sizeof(vm_args)); vm_args.version = JNI_VERSION_1_6; vm_args.nOptions = 1; vm_args.options = options; status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
之后就是采用FindClass方法寻找类
test = env->FindClass("java/lang/String"); item = env->FindClass("jm/item");
其中路径的设置是这样的my.jar在工程目录下,和main.cpp 是同一级 my.jar解压缩到当前目录 有文件夹jm 里面是item.class test可以有正确的返回值,但是item不行
item无法返回值。 还望各位大神解惑,拜谢不已。。。。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
问题可能还是处在java加载那里了,先把Jar改成class试试。你自己的类没有正确加载。
很多年没搞过 JNI 了,下面是我之前的一段代码,是可以正常运行的,其中 exe 和 jar 在同一个目录
回复
你自己的jar包在哪
回复
写完全路径,不要相对路径
回复
试过写完全路径的,也没有效果。。。
回复
您好,在安装jdk的时候没有选有空格的目录,发现还是不行。。。
C++ 调用 java 方法,还要牵扯很多 jvm 的 dll 库,你具体的报错信息是什么?