Почему я получаю сообщение об ошибке = 2 нет такого файла или каталога для ProcessBuilder - PullRequest
1 голос
/ 13 апреля 2020

Я недавно делал программу, которая вводила данные командной строки, используя ProcessBuilder, но всякий раз, когда я запускаю свою команду, я получаю это сообщение об ошибке:

java.io.IOException: Cannot run program "convert" (in directory "/Users/me/Downloads/SpritesFront"): 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:32)
    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

Это код, который я использую для запуска команды :

public void uncompressImage (String name, boolean back, String path) {

        String b = "";  

        if (back) {

            b = "-back";

        }

        ProcessBuilder pb = new ProcessBuilder();

        String[] args = new String[] {"convert" , name + b + ".gif", "-coalesce", name + b + ".gif"};

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

    }

И здесь я вызываю метод:

for (String element : allNames) {

    myDownloader.uncompressImage(element, false, "/Users/me/Downloads/SpritesFront");

}

И allNames - это массив, содержащий имена файлов, которые я пытаюсь распаковать.

Кто-нибудь знает, что является причиной сообщения об ошибке?

Редактировать: Если кому-то было интересно, команда convert является командой ImageMagick, которую я установил на свой компьютер через Homebrew

...