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

时间:2014-11-10 06:41:41

标签: jvm java-native-interface

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版本的方法?

1 个答案:

答案 0 :(得分:1)

JVM向后兼容所有以前的JNI库 所以你应该指定 minumum required JNI版本 对于大多数情况,JNI_VERSION_1_4应该没问题。