java JNI: C 语言调用 Java 方法示例

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
#include <jni.h>
#include <stdio.h>
#include <stdlib.h>

#include <wchar.h> /* include the file to support unicode function */

const char*
DispatchStatus(int status)
{
    switch (status) {
        case JNI_OK:
            return \"success\";
            break;
        case JNI_ERR:
            return \"unknown error\";
            break;
        case JNI_EDETACHED:
            return \"thread detached from the VM\";
            break;
        case JNI_EVERSION:
            return \"JNI version error\";
            break;
        default:
            return __FILE__ \": unknow error\";
            break;
    }
}

void
ArrayTest(JNIEnv* env)
{
    int i = 1;
    jintArray array = (*env)-> NewIntArray(env, 10);

    for(; i<= 10; i++)
        (*env)->SetIntArrayRegion(env, array, i-1, 1, &i);

    /* 获取数组对象的元素个数 */
    int len = (*env)->GetArrayLength(env, array);
    /* 获取数组中的所有元素 */
    jint* elems = (*env)-> GetIntArrayElements(env, array, 0);
    for(i=0; i< len; i++)
        printf(\"ELEMENT %d IS %d\\n\", i, elems[i]);
}

int
main(int argc, const char** argv)
{
    jint status = JNI_OK;
    JavaVM* jvm = (JavaVM*)0;
    JNIEnv* env = (JNIEnv*)0;

    JavaVMInitArgs vm_args;

    vm_args.version = JNI_VERSION_1_4;
    vm_args.options = (JavaVMOption*)0;
    vm_args.nOptions = 0;
    vm_args.ignoreUnrecognized = JNI_FALSE;

    status = JNI_GetDefaultJavaVMInitArgs(&vm_args);
    if (0 != status) {
        printf(\"%s\\n\", DispatchStatus(status));
        return EXIT_FAILURE;
    }

    status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
    if (0 != status) {
        printf(\"test: %s\\n\", DispatchStatus(status));
        return EXIT_FAILURE;
    }
    printf(\"\\r\\n===== Array testing =====\\r\\n\");
    ArrayTest(env);

    printf(\"test: success\\n\");
    if(jvm)
    (*jvm)->DestroyJavaVM(jvm);
    return EXIT_SUCCESS;
}
//该片段来自于http://outofmemory.cn

标签: isp

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:java调整图片的亮度

下一篇:java 使用apache的net包ftp上传文件