0

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) の exec.DefaultExecutor.launch(DefaultExecutor.java:279) org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166) の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) 原因: java.io.IOException: CreateProcess エラー = 2、java.lang.ProcessImpl.create(Native Method) で指定されたファイルが見つかりません。 lang.ProcessImpl.(ProcessImpl.java:177) at java.lang.ProcessImpl.start(ProcessImpl.java:28) at java.lang.ProcessBuilder.start(ProcessBuilder.java:452) ... 8 詳細

これは私が使用しているコードであり、非常にシンプルで簡単ですが、cmd を呼び出さない理由がわかりません (注: cmd を使用せずに mysql ダンプを直接呼び出してみると、同じタイプのエラーが発生します)、助けていただければ幸いです

    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);

    }
4

2 に答える 2

0

Windowsで(プレーン)Javaから外部プログラムを実行します。

Process p = Runtime.getRuntime().exec("cmd /c start /wait \"title\" \""+exe_path_and_other_parameters+"\"");
p.waitFor();
于 2016-05-09T12:44:49.390 に答える