我正在编写一个 Java 程序 MyAwesomeProgram,它使用 Process 的 exec 函数在本地运行 bash 命令。我的代码位于 /home/a/b/c 中,我需要运行位于 /home/a/b/d 中的 .sh 文件。但是,当我运行我的代码时:
Process p;
Runtime rt = new Runtime.getRuntime();
p = rt.exec("./home/a/b/d/shell.sh");
p.waitFor();
我收到一个错误:
Exception in thread "main" java.io.IOException: Cannot run program "./home/a/b/d/shell.sh": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at MyAwesomeProgram.main(MyAwesomeProgram.java:186)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
我相信这只是格式化 exec 命令字符串的错误,但是到目前为止我还没有找到解决方案。我哪里搞砸了?任何其他有效使用 exec 的提示/技巧将不胜感激,但完全是可选的。谢谢!
编辑:我让代码正常工作,这是我倒退的几个目录引用以及 Woot4Moo 所说的问题。