linux环境下c++调用java类库的问题?
现有一软件系统,该软件运行在centos6.3系统环境中,开发语言是c++,
现在根据实际一些客户的需求,需调用所规定的第3方所开发的jar包里的函数,
该库由一系列jar包格式的文件组成,其中我需要调用的函数在 CommonAPI-1.2.jar包中的
cn.gzorg.CommonAPI类中,其他的jar包名例如为:log4j.jar, BaseFuncAPI-1.6.jar,均为
CommonAPI包所依赖的。我把这些jar包复制到linux系统下的 /javalib/目录下,javalib为我新建的文件夹。
在C++中使用如下的代码调用java类库:
long status;
memset(&jvm_args1, 0, sizeof(JavaVMInitArgs));
jvm_args1.version=JNI_VERSION_1_2;
jvm_args1.nOptions = 1;
jvm_args1.ignoreUnrecognized =1;
joptions[0].optionString = "-Djava.class.path=/javalib" //设置java类库的路径
jvm_args1.options = joptions;
status= JNI_CreateJavaVM(&jvm_vm, (void **)&jenv_env, &jvm_args1);
if(status !=JNI_ERR)
{
printf("Start to Find class \n");
maincls=jenv_env->FindClass("cn/gzorg/CommonAPI");
//FindClass("java/lang/String") 这个语句是可以执行成功的。
printf("FindClass=%d \n", maincls);
jenv_env->ExceptionDescribe();
//系统输出了java.lang.NoClassDefFounderError 这个错误提示。说明是无法找到CommonAPI这个类库。
......
}
另外,我把第3方的jar包全部复制到/usr/lib/jvm/java-1.6.0-openjdk-1.6.0/lib目录下,问题依旧,还是在findclass时出错。
想请教下各位,怎么解决无法FindClass的这个错误问题?