- 論壇徽章:
- 0
|
linux環(huán)境下c++調(diào)用java類庫的問題?
現(xiàn)有一軟件系統(tǒng),該軟件運行在centos6.3系統(tǒng)環(huán)境中,開發(fā)語言是c++,
現(xiàn)在根據(jù)實際一些客戶的需求,需調(diào)用所規(guī)定的第3方所開發(fā)的jar包里的函數(shù),
該庫由一系列jar包格式的文件組成,其中我需要調(diào)用的函數(shù)在 CommonAPI-1.2.jar包中的
cn.gzorg.CommonAPI類中,其他的jar包名例如為:log4j.jar, BaseFuncAPI-1.6.jar,均為
CommonAPI包所依賴的。我把這些jar包復(fù)制到linux系統(tǒng)下的 /javalib/目錄下,javalib為我新建的文件夾。
在C++中使用如下的代碼調(diào)用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" //設(shè)置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") 這個語句是可以執(zhí)行成功的。
printf("FindClass=%d \n", maincls);
jenv_env->ExceptionDescribe();
//系統(tǒng)輸出了java.lang.NoClassDefFounderError 這個錯誤提示。說明是無法找到CommonAPI這個類庫。
......
}
另外,我把第3方的jar包全部復(fù)制到/usr/lib/jvm/java-1.6.0-openjdk-1.6.0/lib目錄下,問題依舊,還是在findclass時出錯。
想請教下各位,怎么解決無法FindClass的這個錯誤問題?
|
|