Apache commons-exec无法在命令行

时间:2017-12-01 06:18:48

标签: java mysql command-line apache-commons executor

我正在尝试从java运行mysql命令,该命令使用apache commons-exec从sql脚本文件获取输入,如下所示

    filepath = /path/to/file.sql
    CommandLine commandLine = new CommandLine("mysql -uuser -ppassword dbname");
    commandLine.addArgument("<");
    commandLine.addArgument(filepath);
    Executor executor = new DefaultExecutor();
    executor.execute(commandLine);

但我一直收到以下错误

  

[junit] java.io.IOException:无法运行程序“mysql -uuser   -ppassword dbname“(在目录”。“中):error = 2,没有这样的文件或目录

当我在终端上运行时, 命令正常执行,db被修改。为什么会这样?

1 个答案:

答案 0 :(得分:0)

试试CmdTool库。

    String filepath ="/path/to/file.sql";
    List<String> commandLine = new ArrayList<>(Arrays.asList("mysql", "-uuser", "-ppassword", "dbname"));
    commandLine.add("<");
    commandLine.add(filepath);
    new Cmd().command(commandLine).execute();

或更简单

new Cmd().command("mysql", "-uuser", "-ppassword", "dbname", "<", filepath).execute();

您可以找到更多示例here