gpt4 book ai didi

java - 在不同的目录中使用 Java 的 exec 运行 .sh 文件?

转载 作者:行者123 更新时间:2023-11-29 06:00:58 25 4
gpt4 key购买 nike

我正在编写一个 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 所说的问题。

最佳答案

好吧,如果你的程序存在于:

/home/a/b/c

您的脚本位于:

/home/a/b/d

并且您使用了 您不在正确的目录中。您想使用以下路径执行它:

../d/script.sh

. 表示使用当前目录 + 您的字符串。所以本质上你的输入如下:

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

.. 允许您进入一个目录,如果您位于:

/home/a/b/c

你想要然后到达:

/home/a/b

关于java - 在不同的目录中使用 Java 的 exec 运行 .sh 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10093985/

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