我正在尝试从 apache commons-exec 进行 mysql 转储,但出现以下错误
线程“main”java.io.IOException 中的异常:无法运行程序“cmd.exe \c”(在目录“.”中):CreateProcess 错误=2,系统找不到 java.lang.ProcessBuilder.start 中指定的文件(ProcessBuilder.java:470) 在 java.lang.Runtime.exec(Runtime.java:593) 在 org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:61) 在 org.apache.commons。 org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:336) 在 org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166) 的 exec.DefaultExecutor.launch(DefaultExecutor.java:279)在 org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:153) 在 com.etq.e2mc.platform.windows.WindowsProcess.execCommons(WindowsProcess.java:87) 在 com.etq.e2mc。platform.windows.WindowsProcess.main(WindowsProcess.java:79) Caused by: java.io.IOException: CreateProcess error=2, 系统在 java.lang.ProcessImpl.create(Native Method) 中找不到指定的文件。 lang.ProcessImpl.(ProcessImpl.java:177) 在 java.lang.ProcessImpl.start(ProcessImpl.java:28) 在 java.lang.ProcessBuilder.start(ProcessBuilder.java:452) ... 还有 8 个
这是我正在使用的代码,它非常简单直接,但我不知道为什么它不调用 cmd(注意:尝试在没有 cmd 的情况下直接调用 mysql dump 并且我得到相同类型的错误),将不胜感激任何帮助
public static void main(String[] args) throws Exception {
execCommons();
}
public static void execCommons() throws ExecuteException, IOException {
CommandLine cmd = new CommandLine("cmd.exe /c");
cmd.addArguments("mysqldump");
cmd.addArguments(new String[] { "-u", "root", " -P", "3316", " -h", "localhost", " -A", ">"});
cmd.addArguments("\"G:\\test.sql \"" , false);
new DefaultExecutor().execute(cmd);
}