Почему я не могу запустить пакетную команду из моей java-программы? [дубликат]


На этот вопрос уже есть ответ здесь:

Я пытаюсь запустить команду из моего приложения java. Я получаю ввод от пользователя и запускаю следующую строку кода: Runtime.getRuntime().exec($userInput);. Я перепробовал множество простых команд, включая "echo", "start chrome" и " rem."Похоже, что единственная команда, которая работ "УМК.отлично, " и я понятия не имею, что это вообще делает.

Команды, такие как "echo", генерируют эту ошибку:

java.io.IOException: Cannot run program "echo": CreateProcess error=2, The system cannot find the file specified
            at java.lang.ProcessBuilder.start(Unknown Source)
            at java.lang.Runtime.exec(Unknown Source)
            at java.lang.Runtime.exec(Unknown Source)
            at java.lang.Runtime.exec(Unknown Source)
            at me.Draconwolver.Main.runCmd(Main.java:119)
            at me.Draconwolver.Main.main(Main.java:34)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
            at java.lang.ProcessImpl.create(Native Method)
            at java.lang.ProcessImpl.<init>(Unknown Source)
            at java.lang.ProcessImpl.start(Unknown Source)
            ... 6 more

Не стесняйтесь спрашивать меня о более подробной информации.

1 3

1 ответ:

Потому что echo, start, rem etc-это не исполняемые программы. Это команды оболочки. Их выдерживает только командная оболочка. Вы должны запустить их с помощью

cmd /c echo
cmd /c start chrome

И т. д.