运行在不同的目录与Java的exec .SH文件?(Running .sh files with J

2019-10-16 14:34发布

我正在写一个使用方法exec函数运行的bash命令在本地Java程序MyAwesomeProgram。 我的代码位于在/ 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所说的问题。

Answer 1:

如果你的程序以及居住在:

/home/a/b/c

和你的脚本住在:

/home/a/b/d

并使用. 你是不是在正确的目录。 你想用下面的路径给exec它:

../d/script.sh

. 说使用当前目录+您的字符串。 因此,在本质您输入以下内容:

/home/a/b/c/home/a/b/d

..让你去了一个目录,如果你在其中:

/home/a/b/c

你想,然后在到达:

/home/a/b


文章来源: Running .sh files with Java's exec in a different directory?