我在寫一個Java程序MyAwesomeProgram,它使用Process'exec函數在本地運行bash命令。我的代碼位於/ home/a/b/c中,並且位於/ home/a/b/d中的.sh文件需要運行。然而,當我運行代碼:在不同的目錄中使用Java的exec運行.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說。
:
你想要然後在到達你沒有試過嗎??如果你的代碼是從/ home/a/b/c運行的,那麼這就是/home/a/b/c/home/a/b/d/shell.sh – Dan 2012-04-10 18:05:20
後你如何從命令行運行這個。包括你當前的目錄(即/ home/chris) – Woot4Moo 2012-04-10 18:19:07
javac MyAwesomeProgram.java,java MyAwesomeProgram。主要方法包含代碼(這是一個虛擬程序,用於在將其納入更大的已經測試過的程序組之前測試exec功能)。所有必需的東西都已經導入和測試,按預期工作。 – Chris 2012-04-10 18:21:50