2010-03-05 3 views
3

Я пишу приложение 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).

+0

опубликуйте это на [email protected] – SunnyShah

+0

похоже, что вы не настроены. измените переменную среды PATH, включив в нее путь, содержащий java.exe для меня, это «C: \ Java \ JRE \ Bin», найдите java.exe в вашей системе и соответствующим образом измените этот путь. –

+0

PATH правильно настроен, как я уже сказал в своем вопросе, вызов java из командной строки работает (вызывает его из любого места) –

ответ

1

Возможно, вы захотите проверить среду QProcess, как указано в документах. Я видел случаи, когда среда приложений/QProcess сильно отличается от среды зарегистрированных пользователей, поэтому при выполнении чего-то из кода она не работает, но при выполнении той же самой команды, что и системный пользователь, она работает.

Попробуйте демпинг на то, что думает, что QProcess это среда выглядит и посмотреть, что там:

qDebug() << QProcess::environment(); 

Надежда, которая поможет вам получить работу.

Смежные вопросы