C++ QProcess不支持';无法在windows 7下启动java应用程序

C++ QProcess不支持';无法在windows 7下启动java应用程序,c++,qt4,C++,Qt4,我正在使用Qt(4.6.1)编写一个windows应用程序,它使用QProcess类来执行java应用程序 下面是基本的代码: process = new QProcess(this); connect( process, SIGNAL( started() ), this, SLOT( onProcessStarts() ) ); connect( process, SIGNAL( finished(int) ), this, SLO

我正在使用Qt(4.6.1)编写一个windows应用程序,它使用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 );
process=新的QProcess(此);
连接(进程,信号(已启动()),此,插槽(onProcessStarts());
连接(进程,信号(完成(int)),这个,插槽(onProcessEnds(int));
连接(进程,信号(readyReadStandardOutput()),此,插槽(onProcessOutputs());
连接(进程,信号(错误(QProcess::ProcessError)),此,插槽(onProcessError(QProcess::ProcessError));
QStringList参数;
参数开始(“cmd.exe”,参数);
但是cmd.exe抱怨找不到java

我怀疑涉及到一些许可问题;我将我的可执行文件设置为以管理员身份运行,但运气不好,所以我已经没有主意了


显然,java安装在Windows 7计算机中(从cmd.exe works手动调用)。

您可能需要检查文档中提到的QProcess环境。我见过应用程序/QProcess的环境与登录用户环境有很大不同的情况,因此,当从代码执行某些内容时,它不起作用,但当执行与系统用户完全相同的命令时,它起作用

尝试将数据转储到QProcess认为其环境的样子,并查看其中的内容:

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

qDebug()我知道已经很久了,但我也遇到了同样的问题。我正在运行一个bash脚本,该脚本在QProcess中包含java执行,readyRead捕获了除java输出之外的所有内容。。信号和映射函数

我的解决方案是将bash重定向
2>&1
添加到jave行:

java -cp %(cpPath)s org.opensha.step.calc.STEP_main 2>&1

这对我很有用。

将此信息发布到qt-interest@trolltech.comlooks就像您的环境没有配置一样。更改PATH环境变量,使其包含保存java.exe的路径,即“C:\java\JRE\Bin”,在系统上找到java.exe并相应地更改此路径。PATH已正确配置,如我在问题中所述,从命令行调用java works(从任何位置调用)Hi,我在QProcess和java中遇到了同样的问题。你找到解决办法了吗?你能发布一个解决方案吗?谢谢你,我没有找到任何解决办法。不久前我放弃了这个项目,不知道Qt的新版本是否解决了这个问题。