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

您的第一次尝试失败,因为文件路径中有一个空格,该空格没有用双引号括起来。您的第二次尝试失败了,因为除了文件路径和传递的参数之外,您已经用双引号括起来了-version。而且,在这两种情况下,您都缺少.exe应用程序路径的末尾。

你可以这样尝试:

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

但是,我在这里错过了通过cmdshell 执行它的原因。我想你可以通过java.exe这种方式直接调用:

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

只是一个题外话,你确定java.exe会一直在C:\Program Files\jre\bin\吗?

于 2013-02-05T10:27:29.563 回答