[英]QProcess doesn't start java app under windows 7
我正在使用Qt(4.6.1)编写一个使用QProcess类来执行java应用程序的Windows应用程序。
这基本上是代码:
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中,在process-> start(...)之后发出QProcess信号错误(QProcess :: ProcessError ),给出错误QProcess :: FailedToStart
我也测试了这个:QStringList参数; 参数<<“/ c”; arguments <<“java”; arguments <<“ - jar”; arguments <<“absolute_path \\ app.jar”; //我想执行参数的java应用程序<<“ - blah-blah”; //一些java app的参数process-> start(“cmd.exe”,arguments); 但是后来cmd.exe抱怨找不到java ...
我怀疑涉及一些许可问题; 我将我的可执行文件设置为以管理员身份运行,但没有运气,所以我的想法已经用完......
很明显,java安装在Windows 7机器上(从cmd.exe手动调用它)。
您可能需要检查文档中提到的QProcess环境。 我见过应用程序/ QProcess的环境与登录用户环境有很大不同的情况,因此当从代码执行某些操作时它不起作用,但是当执行与系统用户完全相同的命令时,它可以工作。
尝试转储到QProcess认为它的环境看起来像什么,看看有什么:
qDebug() << QProcess::environment();
希望能帮助你实现目标。
我知道这已经很久了,但我刚遇到同样的问题。 我正在运行一个包含QProcess中的java执行的bash脚本,除了java输出之外的所有内容都由readyRead ..信号和映射函数捕获。
我的解决方案是将bash重定向2>&1
到jave行:
java -cp %(cpPath)s org.opensha.step.calc.STEP_main 2>&1
这对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.