Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中运行已安装的终端命令?_Java_Terminal_Processbuilder - Fatal编程技术网

如何在java中运行已安装的终端命令?

如何在java中运行已安装的终端命令?,java,terminal,processbuilder,Java,Terminal,Processbuilder,我最近正在编写一个程序,该程序使用ProcessBuilder运行终端命令,但每当我运行该程序时,就会出现以下错误: java.io.IOException: Cannot run program "convert": error=2, No such file or directory at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) at java.base/java.lang.Proc

我最近正在编写一个程序,该程序使用ProcessBuilder运行终端命令,但每当我运行该程序时,就会出现以下错误:

java.io.IOException: Cannot run program "convert": error=2, No such file or directory
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
    at Downloader.uncompressImage(Downloader.java:37)
    at Main.main(Main.java:51)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
    at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:319)
    at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:250)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
    ... 3 more
(此代码在MacOS上运行)

编辑:我已经尝试过检查
路径
名称
,两者都是正确的。

使用而不是
cd
。添加以查看发生了什么。请记住,要完成
过程
。像

try {
    pb.inheritIO();
    pb.directory(new File(path));
    pb.command(args);
    Process process = pb.start();
    process.waitFor();
} catch (IOException e) {
    e.printStackTrace();
} catch (InterruptedException e) {
    e.printStackTrace();
}
您可能还需要将
“convert”
更改为
“/usr/local/bin/convert”
(取决于安装的方式和位置)。

使用而不是
cd
。添加以查看发生了什么。请记住,要完成
过程
。像

try {
    pb.inheritIO();
    pb.directory(new File(path));
    pb.command(args);
    Process process = pb.start();
    process.waitFor();
} catch (IOException e) {
    e.printStackTrace();
} catch (InterruptedException e) {
    e.printStackTrace();
}

您可能还需要将
“convert”
更改为
“/usr/local/bin/convert”
(取决于安装的方式和位置)。

这是在MacOS上,我不知道convert isTry是什么类型的文件,并通过shell运行它,例如,
sh convert…
命令不应该是
magick convert…
而不仅仅是
convert…
?不,命令只是“convert”,但我现在修复了它,答案就在下面。这是在MacOS上,我不知道什么类型的文件convert-isTry,并通过shell运行它,例如,
sh convert…
该命令不应该是
magick convert…
而不仅仅是
convert…
?不,该命令只是“convert”,但我现在修复了它,答案就在下面。我以前使用过
.directory
,但我仍然遇到了相同的错误,这就是我尝试cd的原因。我还尝试了您所拥有的,现在我得到了这个错误:
java.io.IOException:无法运行程序“convert”(在目录/Users/nathaniel/Downloads/SpritesFront中):error=2,java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)在java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)没有这样的文件或目录在Downloader.uncompressmage(Downloader.java:36)在Main.Main(Main.java:51)
阅读我答案的最后一句话(在代码之后),并将
“convert”
更改为
“/usr/local/bin/convert”
(或
“/usr/bin/convert”
或安装了
convert
的任何地方)。我注意到,现在您得到了一个更合理的错误。我以前使用过
.directory
,但我仍然得到了相同的错误,这就是我尝试cd的原因。我还尝试了您所拥有的,现在我得到了这个错误:
java.io.IOException:无法运行程序“convert”(在目录/Users/nathaniel/Downloads/SpritesFront中):error=2,java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)在java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)没有这样的文件或目录在Downloader.uncompressmage(Downloader.java:36)在Main.Main(Main.java:51)
阅读我答案的最后一句话(在代码之后),并将
“convert”
更改为
“/usr/local/bin/convert”
(或
“/usr/bin/convert”
或安装了
convert
的任何地方)。我观察到现在你得到了一个更合理的错误。