我試圖做的Apache的公地EXEC一個MySQL轉儲打開cmd,然後我得到以下錯誤錯誤嘗試使用Apache的commons-EXEC罐子
異常線程「main」 java.io. IOException:無法運行程序 「cmd.exe \ c」(在目錄「。」中):CreateProcess error = 2,系統 找不到在 處指定的文件java.lang.ProcessBuilder.start(ProcessBuilder.java:470)在 java.lang.Runtime.exec(Runtime.java:593)at org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:61) at org.apa che.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:279) 在 org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:336) 在 org.apache.commons.exec.DefaultExecutor。執行(DefaultExecutor.java:166) 在 org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:153) 在 com.etq.e2mc.platform.windows.WindowsProcess.execCommons(WindowsProcess.java: 87) at com.etq.e2mc.platform.windows.WindowsProcess.main(WindowsProcess.java:79) 導致:java.io.IOException:CreateProcess錯誤= 2,系統 無法找到在java中指定的文件.lang.ProcessImpl.create(原生(ProcessImpl.java:177)at java.lang.ProcessImpl.start(ProcessImpl.java:28)at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)。在java.lang.ProcessImpl中的方法(ProcessImpl.java:177) ..更多
這是我使用的代碼,它非常簡單直接,但我不明白爲什麼它不調用cmd(注:嘗試直接調用mysql轉儲沒有cmd和我得到同樣的錯誤類型),希望得到任何幫助
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);
}
你可以從'Run'啓動'cmd'嗎?哪個版本的Windows?是'PATH'變量中的'cmd'位置? –
@SabirKhan一切從任何地方運行良好,mysqld轉儲添加到PATH,我可以打開CMD,從運行mysqldump就好! – user1