Как выполнить программу в C ++ Linux

У меня есть проект 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 или я использовал не ту функцию?

0

Решение

Пытаться:

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

Обратите внимание, что «/ bin / java» должен быть заменен полным путем к вашему Java-интерпретатору, который легче всего определить с помощью which java,

4

Другие решения

Сообщение об ошибке от Java, а не от Execl.
Убедитесь, что манифест файла JAR имеет атрибут Main-Class.

Перед вызовом из вашей программы на C ++ запустите jar в командной строке и проверьте, что он работает.

Почему вы хотите в любом случае создать оболочку C ++? Вы можете рассмотреть оболочку оболочки (если вам нужна оболочка вообще).

-1

По вопросам рекламы [email protected]