QProcess不会启动java应用程序

QProcess不会启动java应用程序,java,c++,qt,Java,C++,Qt,我制作了一个java程序来完成对xml的签名,因为我无法通过c++获得签名值,通过cmd运行效果很好,但是使用QProcess我得到以下错误 QProcess processAssinar; processAssinar.start("java -jar " + qApp->applicationDirPath() + "/nfsigner.jar " + pathCertificado + " " + senhaCertificado + " " + xmlFile.fi

我制作了一个java程序来完成对xml的签名,因为我无法通过c++获得签名值,通过cmd运行效果很好,但是使用QProcess我得到以下错误

    QProcess processAssinar;
    processAssinar.start("java -jar " + qApp->applicationDirPath() + "/nfsigner.jar " + pathCertificado + " " + senhaCertificado + " " + xmlFile.fileName());
    processAssinar.waitForFinished(10000);

    qDebug() << processAssinar.arguments();

    if(processAssinar.exitCode() != 0){
        QMessageBox::critical(nullptr, "NF", "Falha ao assinar a nota fiscal");
        qCritical() << processAssinar.readAllStandardError();
        return;
    }

可能是因为参数格式。试试这个:

QString l_jar_path = qApp->applicationDirPath() + "/nfsigner.jar " + pathCertificado + " " + senhaCertificado + " " + xmlFile.fileName();

QStringList l_args;
l_args << "-jar" << l_jar_path;

QProcess l_proc;
l_proc.start("java", l_args);
QString l_jar_path=qApp->applicationDirPath()++“/nfsigner.jar”+pathCertificado+“”+senhaCertificado+“”+xmlFile.fileName();
QStringList l_args;

这有帮助吗?我假设由于路径原因启动了错误的JVM。@ChrisMM但为什么它在cmd中工作?是否安装了相同的java,是否应同时在这两种情况下工作?QT可能具有不同的路径设置,或者cmd具有不同的路径设置。在cmd中键入
where java
,并在Qt应用程序中执行相同操作。它们返回的是相同的吗?我认为您应该全力以赴,将l_jar_路径的每一段作为单个字符串传递给l_args,以避免任何引用问题。
QString l_jar_path = qApp->applicationDirPath() + "/nfsigner.jar " + pathCertificado + " " + senhaCertificado + " " + xmlFile.fileName();

QStringList l_args;
l_args << "-jar" << l_jar_path;

QProcess l_proc;
l_proc.start("java", l_args);