JNI在不同的JVM版本上共享对象兼容性



JNI sdk中的GetEnv方法接受2个参数。

struct JavaVM_ {
    jint GetEnv(void **penv, jint version) {
        return functions->GetEnv(this, penv, version);
    }
};

以下是第二个参数的可能值。

#define JNI_VERSION_1_1 0x00010001
#define JNI_VERSION_1_2 0x00010002
#define JNI_VERSION_1_4 0x00010004
#define JNI_VERSION_1_6 0x00010006
#define JNI_VERSION_1_8 0x00010008

如果我指示JNI_VERSION_1_6,但共享对象是由JVM 1.8加载的,会发生什么?是否有查询JVM版本的方法?

JVM向后兼容所有以前的JNI库
因此,您应该指定所需的最小值JNI版本
JNI_VERSION_1_4在大多数情况下应该是可以的。

最新更新