Как запустить приложение Springboot с использованием среды j ++ C ++ - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь запустить jar-файл приложения Springboot, используя C ++ jni lib, используя следующий код:

void init_jni() {
    const int kNumOptions = 1;
    JavaVMOption options[kNumOptions] = {
            {const_cast<char *>("-Djava.class.path=app-0.0.1-SNAPSHOT.jar"), nullptr},
    };

    JavaVMInitArgs vmArgs = {
            JNI_VERSION_1_8, kNumOptions, options, JNI_TRUE
    };

    // Create the JVM
    JavaVM *javaVM;
    JNIEnv *jniEnv;

    long flag = JNI_CreateJavaVM(&javaVM, (void **) &jniEnv, &vmArgs);


    if (flag == JNI_ERR) {
        cout << "Error creating VM. Exiting...\n";
        exit(1);
    }

    jclass jcls = jniEnv->FindClass("org/springframework/boot/loader/JarLauncher");

    if (jcls == nullptr) {
        jniEnv->ExceptionDescribe();
        javaVM->DestroyJavaVM();
        exit(1);
    }

    jmethodID methodId = jniEnv->GetStaticMethodID(jcls, "main", "([Ljava/lang/String;)V");

    if (methodId == nullptr) {
        jniEnv->ExceptionDescribe();
        javaVM->DestroyJavaVM();
        exit(1);
    }


    jniEnv->CallStaticVoidMethod(jcls, methodId);

    if (jniEnv->ExceptionCheck()) {
        jniEnv->ExceptionDescribe();
        jniEnv->ExceptionClear();
    }


    javaVM->DestroyJavaVM();
}

Я получаю исключение java.lang.CloneNotSupportedException при вызове метода init_jniвыше.Запуск java -jar app-0.0.1-SNAPSHOT.jar работает нормально через терминал.Есть ли что-нибудь еще, что я должен сделать?

Вот исключение:

Exception in thread "main" java.lang.CloneNotSupportedException: java.lang.Class
    at java.lang.Object.clone(Native Method)
    at org.springframework.boot.loader.MainMethodRunner.<init>(MainMethodRunner.java:41)
    at org.springframework.boot.loader.Launcher.createMainMethodRunner(Launcher.java:99)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...