Я пишу приложение Windows, используя Qt (4.6.1), который использует класс QProcess для выполнения Java-приложения.QProcess не запускает приложение java под окнами 7
Вот в основном код:
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 (QProcess :: ProcessError) испускается после процессно> начать (...) дает мне ошибку QProcess :: FailedToStart
Также я тестировал этот : Аргументы QStringList; аргументы < < "/ c"; аргументы < < "java"; аргументы < < "-jar"; аргументы < < "absolute_path \ app.jar"; // приложение Java, которое я хочу выполнить аргументы < < "-blah-blah"; // аргументы java app process-> start ("cmd.exe", аргументы); Но тогда cmd.exe жалуется, что не нашел java ...
Я подозреваю, что есть некоторые проблемы с разрешением; Я установил свой исполняемый файл для запуска как администратор, но не повезло, поэтому у меня закончились идеи ...
Обильно, Java установлен на компьютере Windows 7 (вызов его вручную из работы cmd.exe).
опубликуйте это на [email protected] – SunnyShah
похоже, что вы не настроены. измените переменную среды PATH, включив в нее путь, содержащий java.exe для меня, это «C: \ Java \ JRE \ Bin», найдите java.exe в вашей системе и соответствующим образом измените этот путь. –
PATH правильно настроен, как я уже сказал в своем вопросе, вызов java из командной строки работает (вызывает его из любого места) –