kacy16 发表于 2016-09-18 17:45

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

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.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的这个错误问题?       

页: [1]
查看完整版本: linux环境下c++调用java类库的问题