linux环境下c++调用java类库的问题?

happyzeng79 2016-09-18 06:12:52
现有一软件系统,该软件运行在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的这个错误问题?
...全文
1490 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧