【发布时间】:2010-03-05 08:34:55
【问题描述】:
我正在使用 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 参数; 参数 开始(“cmd.exe”,参数); 但是后来 cmd.exe 抱怨没有找到 java...
我怀疑涉及到一些权限问题;我将我的可执行文件设置为以管理员身份运行,但没有运气,所以我的想法已经用完了......
显然,java 安装在 Windows 7 机器上(从 cmd.exe 手动调用它有效)。
【问题讨论】:
-
发布到 qt-interest@trolltech.com
-
看起来您的环境未配置。更改您的 PATH 环境变量以包含保存 java.exe 的路径,它是“C:\Java\JRE\Bin”,在您的系统上找到 java.exe 并相应地更改此路径。
-
PATH 配置正确,正如我在我的问题中所说,从命令行调用 java 有效(从任何位置调用它)
-
您好,我在使用 QProcess 和 java 时遇到了同样的问题。你找到解决方案了吗?你能发布一个解决方法吗?谢谢
-
不,我没有找到任何解决方案。我前段时间放弃了这个项目,不知道新版本的 Qt 是否解决了这个问题。