簡體   English   中英

QProcess不會在Windows 7下啟動Java應用程序

[英]QProcess doesn't start java app under windows 7

我正在使用Qt(4.6.1)編寫一個使用QProcess類來執行java應用程序的Windows應用程序。

這基本上是代碼:

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中,在process-> start(...)之后發出QProcess信號錯誤(QProcess :: ProcessError ),給出錯誤QProcess :: FailedToStart

我也測試了這個:QStringList參數; 參數<<“/ c”; arguments <<“java”; arguments <<“ - jar”; arguments <<“absolute_path \\ app.jar”; //我想執行參數的java應用程序<<“ - blah-blah”; //一些java app的參數process-> start(“cmd.exe”,arguments); 但是后來cmd.exe抱怨找不到java ...

我懷疑涉及一些許可問題; 我將我的可執行文件設置為以管理員身份運行,但沒有運氣,所以我的想法已經用完......

很明顯,java安裝在Windows 7機器上(從cmd.exe手動調用它)。

您可能需要檢查文檔中提到的QProcess環境。 我見過應用程序/ QProcess的環境與登錄用戶環境有很大不同的情況,因此當從代碼執行某些操作時它不起作用,但是當執行與系統用戶完全相同的命令時,它可以工作。

嘗試轉儲到QProcess認為它的環境看起來像什么,看看有什么:

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

希望能幫助你實現目標。

我知道這已經很久了,但我剛遇到同樣的問題。 我正在運行一個包含QProcess中的java執行的bash腳本,除了java輸出之外的所有內容都由readyRead ..信號和映射函數捕獲。

我的解決方案是將bash重定向2>&1到jave行:

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

這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM