2010-03-05 148 views
3

我正在写一个Windows应用程序使用Qt(4.6.1),它使用QProcess类来执行Java应用程序。QProcess不启动Windows应用程序下的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信号错误(QProcess中::的processError)后流程 - 发射>启动(...)给我另外,QProcess :: FailedToStart

而且我测试了这个错误: QStringList参数; 论据< <“/ c”; 论据< <“java”; 论据< <“-jar”; 参数< <“absolute_path \ app.jar”; //我想执行的java应用程序 参数< <“-blah-blah”; //一些java程序的参数 process-> start(“cmd.exe”,arguments); 但是,然后cmd.exe抱怨没有找到java ...

我怀疑有一些权限问题,我设置我的可执行文件作为管理员运行,但没有运气,所以我已经用尽了想法...

显然,Java安装在Windows 7机器(手动调用它从cmd.exe工程)。

+0

发布到[email protected] – SunnyShah 2010-06-23 14:20:06

+0

看起来像你的环境没有配置。改变你的PATH环境变量以包含为我保存java.exe的路径,它是“C:\ Java \ JRE \ Bin”,在你的系统上找到java.exe并相应地改变这个路径。 – 2011-02-23 12:46:33

+0

正确配置PATH,正如我在我的问题中所说的,从命令行工作调用java(从任何位置调用它) – 2011-02-23 16:15:57

回答

1

您可能想要检查文档中提到的QProcess环境。我已经看到了应用程序/ QProcess的环境与登录用户环境有很大差异的情况,所以当从代码执行某些内容时,它不起作用,但是在执行与系统用户完全相同的命令时工作。

尝试倾销到什么QProcess中认为这是环境的样子,看看还有什么:

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

希望这将有助于你得到它的工作。

相关问题