Я пишу Windows-приложение, использующее Qt (4.6.1), которое использует класс QProcess для выполнения Java-приложения.
Вот в основном код:
process = new QProcess(this);
connect( process, SIGNAL( started() ), this, SLOT( onProcessStarts() ) );
connect( process, SIGNAL( finished(int) ), this, SLOT( onProcessEnds(int) ) );
connect( process, SIGNAL( readyReadStandardOutput() ), this, SLOT( onProcessOutputs() ) );
connect( process, SIGNAL( error(QProcess::ProcessError)), this, SLOT(onProcessError(QProcess::ProcessError)));
QStringList arguments;
arguments << "-jar";
arguments << "absolute_path\app.jar"; //the java app that I want to execute
arguments << "-blah-blah"; //some java app's arguments
process->start( "java", arguments );
Вот так я запускаю java-приложение, и оно работает нормально, НО, поскольку я тестировал только на своем компьютере с Windows XP. Когда я проверил это на другом компьютере с Windows 7, это не удалось.
В Windows 7 сигнал QProcess error (QProcess :: ProcessError) выдается после process-> start (...), сообщая мне ошибку QProcess :: FailedToStart
Также я проверил это:
QStringList arguments;
аргументы << "/ c";
аргументы << "Java";
аргументы << "-jar";
аргументы << "absolute_path \ app.jar"; // Java-приложение, которое я хочу выполнить
аргументы << "-бла-бла"; // некоторые аргументы Java-приложения
process-> start ("cmd.exe", аргументы);
Но тогда cmd.exe жалуется, что не находит Java ...
Я подозреваю, что есть проблема с разрешением; Я установил мой исполняемый файл как администратор, но не повезло, поэтому у меня закончились идеи ...
Очевидно, что java установлен на машине с Windows 7 (работает вручную из cmd.exe).