Advertisement
krzys_h

Call Java from C++

Oct 2nd, 2015
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include <cstdio>
  2. #include <jni.h>
  3. #include <cassert>
  4.  
  5. class CJava {
  6. public:
  7.     CJava()
  8.     {
  9.         JavaVMInitArgs args;
  10.         JavaVMOption options;
  11.         args.version = JNI_VERSION_1_6;
  12.         args.nOptions = 1;
  13.         options.optionString = "-Djava.class.path=./";
  14.         args.options = &options;
  15.         args.ignoreUnrecognized = false;
  16.         int res = JNI_CreateJavaVM(&m_javaVM, (void**)&m_jniEnv, &args);
  17.         if (res < 0 || m_jniEnv == nullptr)
  18.         {
  19.             printf("Unable to Launch JVM, error %d\n", res);
  20.             assert(false);
  21.         }
  22.         printf("Started JVM\n");
  23.     }
  24.  
  25.     JNIEnv* GetJNIEnv()
  26.     {
  27.         return m_jniEnv;
  28.     }
  29.  
  30. private:
  31.     JavaVM* m_javaVM;
  32.     JNIEnv* m_jniEnv;
  33. };
  34.  
  35. int main(int argc, char* argv[])
  36. {
  37.     CJava* java = new CJava();
  38.  
  39.     jclass testClass = java->GetJNIEnv()->FindClass("TestClass");
  40.     assert(testClass != nullptr);
  41.  
  42.     jmethodID mainMethod = java->GetJNIEnv()->GetStaticMethodID(testClass, "testMethod", "()V");
  43.     assert(mainMethod != nullptr);
  44.     java->GetJNIEnv()->CallStaticVoidMethod(testClass, mainMethod, nullptr);
  45.  
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement