首页 > 解决方案 > JNI_CreateJavaVM:OpenBSD 上的“无法为代码缓存保留足够的空间”

问题描述

我尝试在 OpenBSD 6.1 虚拟机上使用 OpenJDK 1.8 从 C 调用 Java 代码

有我的测试程序源代码:

#include <stdlib.h>
#include <stdio.h>
#include <jni.h>
int main(int argc, char *argv[])
{

    JavaVMInitArgs args;

    JavaVM *jvm;
    JNIEnv *env;
    JavaVMOption options[1];

    args.version = JNI_VERSION_1_6;

    options[0].optionString = "-Djava.class.path=.";
    args.options = options;
    args.nOptions = 1;

    if ( JNI_CreateJavaVM(&jvm, (void **) &env, (void *) &args))
    {
        fprintf(stderr, "Failed to create the JVM\n");
        exit(1);
    }

    (*jvm)->DestroyJavaVM(jvm);
    return 0;
}

汇编:

gcc -I/usr/local/jdk-1.8.0/include -I/usr/local/jdk-1.8.0/include/openbsd -L/usr/local/jdk-1.8.0/jre/lib/amd64/server -ljvm main.c

跑:

# LD_LIBRARY_PATH=/usr/local/jdk-1.8.0/jre/lib/amd64/server/ ./a.out
Error occurred during initialization of VM
Could not reserve enough space for code cache

我尝试添加-XX:ReservedCodeCacheSize=200m选项,但结果始终相同

当我在 Linux 上运行测试代码时,一切正常

标签: javacjava-native-interfaceopenbsd

解决方案


推荐阅读