Can C++ call Java code?

前端 未结 2 724
没有蜡笔的小新
没有蜡笔的小新 2020-12-11 03:06

I know that Java code can call C++ code through JNI. Is it possible, however, to call Java code from C++ again through JNI or with any other method?

2条回答
  •  遥遥无期
    2020-12-11 04:06

    Yep you certainly can. Here's an example:

    Here's the java file:

    public class InvocationHelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello, World!");
            System.out.println("Arguments sent to this program:");
            if (args.length == 0) {
                System.out.println("(None)");
            } else {
                for (int i=0; i

    And heres some C++ that uses it:

    void invoke_class(JNIEnv* env) {
      jclass helloWorldClass;
      jmethodID mainMethod;
      jobjectArray applicationArgs;
      jstring applicationArg0;
    
      helloWorldClass = (env)->FindClass("InvocationHelloWorld");
      if(! helloWorldClass )
      {
        std::cerr<<"Couldn't get \"InvocationHelloWorld\""<GetStaticMethodID(helloWorldClass, "main", "([Ljava/lang/String;)V");
      if(! mainMethod )
      {
        std::cerr<<"Coulnd't get \"InvocationHelloWorld::main\""<NewObjectArray(1, (env)->FindClass("java/lang/String"), NULL);
      applicationArg0 = (env)->NewStringUTF("From-C-program");
      (env)->SetObjectArrayElement(applicationArgs, 0, applicationArg0);
    
      (env)->CallStaticVoidMethod(helloWorldClass, mainMethod, applicationArgs);
    }
    

提交回复
热议问题