当从项目ProcessBuilder调用时,java程序返回-103741515



我有一个java应用程序,它负责执行一些exe文件。当我从命令行或从另一个本地Java应用程序调用此程序时,使用以下代码片段:

import java.io.File;
import java.io.IOException;
public class Test{
public static void main (String args[]) throws InterruptedException, IOException {
ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c",
"Test.exe -export -f output.txt");

File file = new File("C:\_CommandOutput.txt");
processBuilder.redirectOutput(file);
processBuilder.redirectError(file);

int exitVal = processBuilder.start().waitFor();
System.out.println("Script executed and exit value is: "+ exitVal);
}
}

一切正常,应用程序将退出代码返回为零。

但是,当我在同一台电脑上用其他Java JRE中完全相同的用户帐户调用同一个程序时,我会从应用程序中得到错误返回代码107374155。

C:>set PATH=C:jdk1.8.0bin;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;
C:>java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
C:>java Test
Script executed and exit value is: 0
C:>set PATH=C:Program FilesUtilityjrebin;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;
C:>java -version
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)
C:>java Test
Script executed and exit value is: -1073741515

似乎没有名为Test.exe -export -f output.txt的程序。请尝试使用以下代码,它将查找一个名为Test.exe的程序,该程序接受几个参数:

ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c",
"Test.exe", "-export", "-f", "output.txt");

此外,您应该在"Test.exe"前面加上它的完整路径,比如"C:/Some/Path/Test.exe"

最新更新