Java无法在Java中执行CMD命令

我有个问题。我正在尝试在 Java 中执行以下命令:

cd C:UsersAlexanderProjects/Simulator && mvn package

在 CMD 命令行中,此命令确实被正确执行,但是当我尝试使用以下代码在 java 中运行它时:

try {
    String compileSimulatorCommand = "cd C:/Users/Alexander/Projects/Simulator && mvn package";
    Process compileSimulatorProcess = Runtime.getRuntime().exec(compileSimulatorCommand);
    compileSimulatorProcess.waitFor();
} 
catch (Exception e) {
    e.printStackTrace();
}

但这会返回以下错误:

java.io.IOException: Cannot run program "cd": CreateProcess error=2, The system cannot find the file specified
        at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1142)
        at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
        at java.base/java.lang.Runtime.exec(Runtime.java:591)
        at java.base/java.lang.Runtime.exec(Runtime.java:415)
        at java.base/java.lang.Runtime.exec(Runtime.java:312)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
        at java.base/java.lang.ProcessImpl.create(Native Method)
        at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:483)
        at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:158)
        at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1109)

我怎样才能解决这个问题?

回答

你不能cd作为命令运行。您可以exec在执行命令时设置工作目录。

Process compileSimulatorProcess = Runtime
    .getRuntime()
    .exec(
        "mvn package", 
        null, 
        new File("C:/Users/Alexander/Projects/Simulator"));

也可能需要 import java.io.File

有关此 exec 重载的更多信息,请参阅文档。


以上是Java无法在Java中执行CMD命令的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>