gpt4 book ai didi

java Runtime.exec 运行 shell 脚本 - 无法打开文件

转载 作者:行者123 更新时间:2023-12-01 22:38:49 24 4
gpt4 key购买 nike

我正在使用 Runtime.getRuntime().exec() 从 java 代码运行 shell 脚本。

    String[] cmd = {"sh",  "build.sh", "/Path/to my/sh file"};
try{
Process proc = Runtime.getRuntime().exec( cmd );
}
catch(Exception e){
System.out.println("Exception is:"+e);
}

它在控制台中给出以下输出:

sh: Can't open build.sh

我在这里遵循了一些错误的方法吗?无法弄清楚为什么会发生这种情况。

编辑

根据这里的评论,我修改了 String[] cmd = {"sh", "build.sh", "/Path/to my/sh file"};String[] cmd = {"sh", "/Path/to my/sh file/build.sh", "/Path/to my/sh file"}; 。现在的问题是这个脚本需要从特定路径执行。当我从命令提示符执行此脚本时,我首先将目录更改为该路径并执行它。我该如何修改这段代码?

最佳答案

使用ProcessBuilder并将进程的工作目录设置为脚本实际所在的目录:

final ProcessBuilder pb = new ProcessBuilder("/bin/sh", "script.sh", "whatever",
"arguments", "go", "here");
pb.directory(new File("/path/to/directory"));
// redirect stdout, stderr, etc
final Process p = pb.start();

请参阅ProcessBuilder javadoc 。它包含您可以执行的操作的示例。 Runtime.exec() 已经过去了:p

关于java Runtime.exec 运行 shell 脚本 - 无法打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17142573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com