从c++代码运行一个可执行的jar
run a executable jar from c++ code
我需要从一些c++代码内部执行jar
文件。
我尝试了以下命令
int ret = execlp("java", "java", "-jar", "myprog.jar", (char *)0);
工作得很好。但是我的问题是我的c++主线程在执行我的jar文件后停止了。我不想在执行jar文件后停止我的c++主线程。我该怎么做呢?
对
解决这个问题的正常方法是fork(),然后从新生成的进程中执行exec()。
您总是可以使用JNI来启动JVM并调用程序的main方法。
#include <jni.h> /* where everything is defined */
...
JavaVM *jvm; /* denotes a Java VM */
JNIEnv *env; /* pointer to native method interface */
JDK1_1InitArgs vm_args; /* JDK 1.1 VM initialization arguments */
vm_args.version = 0x00010001; /* New in 1.1.2: VM version */
/* Get the default initialization arguments and set the class
* path */
JNI_GetDefaultJavaVMInitArgs(&vm_args);
vm_args.classpath = ...;
/* load and initialize a Java VM, return a JNI interface
* pointer in env */
JNI_CreateJavaVM(&jvm, &env, &vm_args);
/* invoke the Main.test method using the JNI */
jclass cls = env->FindClass("Main");
jmethodID mid = env->GetStaticMethodID(cls, "test", "(I)V");
env->CallStaticVoidMethod(cls, mid, 100);
/* We are done. */
jvm->DestroyJavaVM();
相关文章:
- 程序在使用 system() 启动另一个可执行文件时停止
- 只有一个可执行文件即可进行跨平台 SIMD 调用?
- 构建一个可执行文件,如果是单个 cpp 文件
- C++将各种资源文件链接到一个可执行文件中
- 如何在 ubuntu 上将可执行文件注入另一个可执行文件
- 'Continuous' C++一个可执行文件的输出作为另一个程序的输入
- 程序如何创建另一个可执行文件
- 用cpp、python和csv文件制作一个可执行文件
- 从Ubuntu到Debian运行一个可执行文件
- 当文件相互依赖时,如何使用g++将多个cpp文件编译为一个可执行文件
- 执行一个新的完全独立的进程,该进程封装在一个可执行文件中,而不需要为独立进程将文件写入磁盘
- 在solaris中运行一个可执行的c++程序
- 我可以将一个可执行文件与另一个可执行文件(Windows 服务程序)组合在一起,并将该程序作为逻辑服务运行吗?
- 在Linux上,从C++调用一个可执行文件,然后等待它完成
- 将所有.cpp文件编译为一个可执行文件
- 如何将多个gsoap客户端web服务编译成一个可执行文件
- 从c++代码运行一个可执行的jar
- 如何在CMake中更改一个可执行文件的编译器标志
- 创建一个调用另一个可执行文件的可执行文件
- 如何在调试模式和发布模式下链接一个动态库和一个可执行文件