diff --git a/src/java/mraajava.i b/src/java/mraajava.i index 5225e29..86abc53 100644 --- a/src/java/mraajava.i +++ b/src/java/mraajava.i @@ -72,13 +72,17 @@ class Spi; jint JNI_OnLoad(JavaVM *vm, void *reserved) { /* initialize mraa and set jni functions */ mraa_result_t res = mraa_init(); - if (res == MRAA_SUCCESS || res == MRAA_ERROR_PLATFORM_ALREADY_INITIALISED) { + if (res == MRAA_SUCCESS) { mraa_java_set_jvm(vm); lang_func->java_isr_callback = &mraa_java_isr_callback; lang_func->java_attach_thread = &mraa_java_attach_thread; lang_func->java_detach_thread = &mraa_java_detach_thread; lang_func->java_create_global_ref = &mraa_java_create_global_ref; lang_func->java_delete_global_ref = &mraa_java_delete_global_ref; + } else { + JNIEnv* jenv; + vm->GetEnv((void**)&jenv, JNI_REQUIRED_VERSION); + SWIG_JavaException(jenv, SWIG_RuntimeError, "mraa_init() failed"); } return JNI_REQUIRED_VERSION; }