I need to call some Java functions from C code. I've found some tutorial on how create new jvm from C, but I need an existing jvm (I know her PID). Furthermore, in my case, C dll was invocated by Java using JNI, I need to callback that JVM from C.
Here a portion of my code:
JAVA:
public class HelloJNI {
static {
// hello.dll on Windows or libhello.so on Linux
System.loadLibrary("hello");
}
// native method for call C dll
private native String getHello(int jvmProcessId);
public String doHello(){
return getHello(myProcessId);
}
}
C:
#include "hellojni_actions_HelloJNI.h"
void invoke_class(JNIEnv* env) {
// HERE I NEED TO CALL A METHOD OF JAVA CLASS WHICH LOADED ME (HelloJNI.java) IN THE SAME JVM
}
JNIEXPORT jstring JNICALL Java_hellojni_actions_HelloJNI_getHello
(JNIEnv *env, jobject thisObj, jint jvmProcessId){
invoke_class(env);
return (*env)->NewStringUTF(env, "Testing...");
}