gpt4 book ai didi

c++ - QProcess 不会在 Windows 7 下启动 java 应用程序

转载 作者:太空狗 更新时间:2023-10-29 23:10:07 31 4
gpt4 key购买 nike

我正在使用 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 );

这就是我启动 Java 应用程序的方式,它工作正常,但据我仅在我的 Windows XP 机器上测试过。当我在另一台装有 Windows 7 的计算机上对此进行测试时,它失败了。

在 Windows 7 中,QProcess 信号 error(QProcess::ProcessError) 在 process->start(...) 之后发出,给我错误 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 手动调用它有效)。

最佳答案

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

尝试转储到 QProcess 认为它​​的环境看起来像什么,看看那里有什么:

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

希望这会帮助你让它工作。

关于c++ - QProcess 不会在 Windows 7 下启动 java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2385437/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com