运行 通过 exec 来自 C 的 jar

Running jar from C via exec

我有一个小 C 程序,我正在其中创建一个新进程,我想在那里执行一个 Jar 文件。这是执行调用:

execl("/usr/bin/java", "-jar", "/home/user/path/file.jar", NULL)

但是我得到一个错误:

Error: Could not find or load main class .home.user.path.file.jar

如果我 运行 来自命令行的相同命令 Jar 运行s 没有问题。我已经检查了清单文件,那里一切都很好。

所以我不知道为什么路径中的斜杠变成了点,导致错误。谁能阐明这个问题?

请注意 execl 将 "path" 和 "argv0" 作为两个单独的参数,尽管人们通常认为它们是同一件事。即,您通常需要

execl("/usr/bin/java", "/usr/bin/java", "-jar", "foo.jar", NULL);