diff options
Diffstat (limited to 'Tests/FindJNI/Minimal/minimal.cxx')
-rw-r--r-- | Tests/FindJNI/Minimal/minimal.cxx | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Tests/FindJNI/Minimal/minimal.cxx b/Tests/FindJNI/Minimal/minimal.cxx new file mode 100644 index 0000000..4423613 --- /dev/null +++ b/Tests/FindJNI/Minimal/minimal.cxx @@ -0,0 +1,38 @@ +#include <cassert> + +#include <jni.h> + +extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) +{ + void* tmp; + if (vm->GetEnv(&tmp, JNI_VERSION_1_2) != JNI_OK) { + return -1; + } + + // The following lines do: + // + // System.out.println("FindJNI"); + // + JNIEnv* env = static_cast<JNIEnv*>(tmp); + + jclass clzS = env->FindClass("java/lang/System"); + jclass clzP = env->FindClass("java/io/PrintStream"); + + jfieldID outF = env->GetStaticFieldID(clzS, "out", "Ljava/io/PrintStream;"); + jobject out = env->GetStaticObjectField(clzS, outF); + jmethodID println = + env->GetMethodID(clzP, "println", "(Ljava/lang/String;)V"); + + env->CallVoidMethod(out, println, env->NewStringUTF("FindJNI")); + + return JNI_VERSION_1_2; +} + +extern "C" JNIEXPORT void JNICALL JNI_OnUnload(JavaVM* vm, void* reserved) +{ + void* env; + jint result = vm->GetEnv(&env, JNI_VERSION_1_2); + assert(result == JNI_OK); + + assert(static_cast<JNIEnv*>(env)->GetVersion() == JNI_VERSION_1_2); +} |