运行 jar 文件使用 Qt (QProcess)

Posted

技术标签:

【中文标题】运行 jar 文件使用 Qt (QProcess)【英文标题】:Run jar file use Qt (QProcess) 【发布时间】:2021-02-25 13:51:11 【问题描述】:

如何从 qt 执行 jar 应用程序(使用 Windows)?我知道 QProcess,我使用它:

     QProcess myProcess;
     myProcess.setWorkingDirectory("D:\Programs\Qt\Units\MyJavaProjects\StackExp\target");
     myProcess.start("StackExp-1.0-SNAPSHOT.jar");
     myProcess.waitForFinished();

我显示这条消息:

D:\Programs\Qt\Units\MyJavaProjects\Qt-Java\JavaQt\mainwindow.cpp:78: предупреждение: C4129: 'P': unrecognized character escape sequence

D:\Programs\Qt\Units\MyJavaProjects\Qt-Java\JavaQt\mainwindow.cpp:78: предупреждение: C4129: 'Q': unrecognized character escape sequence

D:\Programs\Qt\Units\MyJavaProjects\Qt-Java\JavaQt\mainwindow.cpp:78: предупреждение: C4129: 'M': unrecognized character escape sequence

D:\Programs\Qt\Units\MyJavaProjects\Qt-Java\JavaQt\mainwindow.cpp:78: предупреждение: C4129: 'S': unrecognized character escape sequence

而且我的 jar 文件没有运行。我如何从 qt 执行我的 jar 文件?我的问题有 qt 其他库吗? 你怎么看?

【问题讨论】:

或使用start.exe 启动它并利用那里的文件类型关联。但是,您的错误消息试图提醒您,如果您想在字符串中使用反斜杠,则必须将它们加倍("D:\\Progra...")。 start.exe 呢?我有一个 java 文件,可执行 jar 文件。我尝试这样做,使用双“\\”但不运行,也不显示错误,你怎么看? 【参考方案1】:

当您“运行 example.jar”时,您实际上运行的是 java.exe -jar example.jar

QProcess process;
process.setWorkingDirectory("D:\\Programs\\Qt\\Units\\MyJavaProjects\\StackExp\\target");
process.setProgram("java.exe");
process.setArguments("-jar","StackExp-1.0-SNAPSHOT.jar");
process.start();

【讨论】:

使用这段代码,我什么都没有,并显示消息:QProcess: Destroyed while process ("java.exe") is still running。怎么了? 添加process.waitForFinished(); 或将process.start() 替换为process.startDetached()

以上是关于运行 jar 文件使用 Qt (QProcess)的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt QProcess 中运行 sudo 命令

linux下QT中如何使用QProcess运行linux命令。

使用 qprocess 运行 .exe

运行文件时如何使用qprocess实时读取输出

QT Creator QProcess

从 QThread 启动 QProcess [重复]