【发布时间】:2021-08-03 01:32:06
【问题描述】:
我需要在 java 中运行一个 shell 脚本。该脚本接受两个参数作为参数,第一个是名称,第二个是目录路径。
我在本地机器上使用 Windows 作为操作系统。
下面是我要运行的代码:
ProcessBuilder processBuilder = new ProcessBuilder("D:\\temp\\script\\create_script.sh", name, sourceDir);
try {
Process process = processBuilder.start();
StringBuilder output = new StringBuilder();
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
int exitVal = process.waitFor();
if (exitVal == 0) {
System.out.println("Success!");
System.out.println(output);
System.exit(0);
} else {
//abnormal...
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
上面的代码给出以下错误:
2021-05-12 22:08:47.383 INFO 10600 --- [nio-8090-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
java.io.IOException: Cannot run program "D:\temp\script\create_script.sh": CreateProcess error=193, %1 is not a valid Win32 application
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
有人可以帮我解决缺少的部分吗?
感谢您的所有帮助!提前致谢!
【问题讨论】:
-
可能与stackoverflow.com/questions/12637203/… 重复?你能检查一下 Sweta Sharma 吗?