免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1513 | 回复: 0

[Linux] linux环境下c++调用java类库的问题 [复制链接]

论坛徽章:
0
发表于 2016-09-18 17:45 |显示全部楼层
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的这个错误问题?       

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP