【问题标题】:QProcess doesn't start java app under windows 7QProcess 不会在 Windows 7 下启动 java 应用程序
【发布时间】: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 是否解决了这个问题。

标签: c++ qt4


【解决方案1】:

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

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

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

希望这将帮助您使其正常工作。

【讨论】:

    【解决方案2】:

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

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

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

    这对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 2013-12-26
      • 1970-01-01
      • 2015-02-03
      • 2011-08-22
      • 2012-03-08
      相关资源
      最近更新 更多