3

を呼び出しcmd to excute javaていますが、resultcodeは常に 1 です。確認したところ、「不正な機能」を表していることがわかりました。私のコードは次のようなものです:

Exec('cmd', '/c C:\Program Files\jre\bin\java -version','' , SW_HIDE,   ewWaitUntilTerminated, ResultCode);

次のコードも呼び出しますが、どちらも機能しません。

 Exec('cmd', '/c "C:\Program Files\jre\bin\java -version"','' , SW_HIDE,  ewWaitUntilTerminated, ResultCode);

次のコードを呼び出すと、動作します

 Exec('cmd', '/c java -version','' , SW_HIDE, ewWaitUntilTerminated, ResultCode);

Javaパスのスペースが認識できないようです。誰もそれを修正する方法を知っていますか?

4

1 に答える 1

3

ファイルパスにスペースがあり、二重引用符で囲まれていないため、最初の試行は失敗しました。ファイルパスと渡されたパラメータを除いて二重引用符で囲んだため、2回目の試行は失敗しました-version。また、どちらの場合も.exe、アプリケーションパスの最後に欠落しています。

代わりに、次の方法で試すことができます。

Exec('cmd', '/c ""C:\Program Files\jre\bin\java.exe" -version"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);

cmdしかし、シェルを介して実行する理由がここにありません。私はあなたがjava.exeこのように呼ぶことによってそれを直接することができると思います:

Exec('C:\Program Files\jre\bin\java.exe', '-version', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);

オフトピックノートが1つだけありますが、java.exe常に表示されC:\Program Files\jre\bin\ますか?

于 2013-02-05T10:27:29.563 に答える