如何在C ++ Linux中执行程序

时间:2016-01-04 17:15:59

标签: c++ linux execl

我有一个cpp项目,它执行另一个程序 这是我的测试:

int main() {
    execl("java -jar /pathOfJAR/myjar.jar", NULL);

    return 0;
}

我跑了这个项目而我一无所获。

然后我试着这样:

execl("java", "-jar", "/pathOfJAR/myjar.jar");

我收到了一个错误:

  

错误:无法找到或加载主类.pathOfJAR.myjar.jar

但是,我可以在终端中运行命令:

java -jar /pathOfJAR/myjar.jar

我可以得到正确的结果。

如何使用函数execl或我使用了错误的函数?

2 个答案:

答案 0 :(得分:4)

尝试:

execl("/bin/java", "java", "-jar", "/pathOfJAR/myjar.jar", NULL);

请注意" / bin / java"应该用你的java解释器的完整路径替换,最容易用which java确定。

答案 1 :(得分:-1)

错误消息来自java,而不是来自execl。 确保jar文件的清单具有Main-Class属性。

在从C ++程序调用之前,在命令行中运行jar并测试它是否有效。

为什么要构建C ++包装器呢?你可能想要考虑一个shell包装器(如果你需要一个包装器)。