为什么我不能从我的java程序运行批处理命令?

Syn*_*ous 4 java createprocess batch-file ioexception

我正在尝试从我的java应用程序运行命令.我从用户那里得到输入并运行这行代码:Runtime.getRuntime().exec($userInput);.我尝试过很多简单的命令,包括"echo","start chrome"和"rem".似乎唯一有效的命令是"cmd.exe",我甚至不知道它是什么.

诸如"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
Run Code Online (Sandbox Code Playgroud)

请随时向我询问更多详情.

use*_*421 6

因为echo, start,rem等不是可执行程序.它们是shell命令.只有命令shell才能完成它们.你必须运行它们

cmd /c echo
cmd /c start chrome
Run Code Online (Sandbox Code Playgroud)

等等