使用Java Runtime.exec()启动MySQL服务器

使用Java Runtime.exec()启动MySQL服务器,java,runtime,runtime.exec,Java,Runtime,Runtime.exec,我想使用Java Runtime.getRuntime().exec()启动MySQL服务器,但它只是在没有启动服务器的情况下终止,并且错误和输入流没有输出。我的代码: Process p = Runtime.getRuntime().exec("\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysqld.exe\"" + " --defaults-file=\"C:\\Program Files\\MySQL\\MySQ

我想使用Java Runtime.getRuntime().exec()启动MySQL服务器,但它只是在没有启动服务器的情况下终止,并且错误和输入流没有输出。我的代码:

Process p = Runtime.getRuntime().exec("\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysqld.exe\"" + 
        " --defaults-file=\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini\"" +                 
        " --standalone" +                   
        " --secure-auth");          

StreamReader errorStreamReader = new StreamReader(p.getErrorStream());
StreamReader outputStreamReader = new StreamReader(p.getInputStream());


errorStreamReader.start();
outputStreamReader.start();

if(p.waitFor() == 0) {  

    return true;
}

return false;
我想实现的是从Java应用程序启动MySQL服务器,Java应用程序不应该阻塞,Java应用程序应该在启动MySQL服务器后继续执行

Process p = Runtime.getRuntime().exec("\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysqld.exe\"" + 
        " --defaults-file=\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini\"" +                 
        " --standalone" +                   
        " --secure-auth");          

StreamReader errorStreamReader = new StreamReader(p.getErrorStream());
StreamReader outputStreamReader = new StreamReader(p.getInputStream());


errorStreamReader.start();
outputStreamReader.start();

if(p.waitFor() == 0) {  

    return true;
}

return false;

如何做到这一点?

阅读(并实施)所有的建议。然后忽略它引用的
exec
,并使用
ProcessBuilder
构建
流程。还可以将
String arg
分解为
String[]args
,以说明本身包含空格的参数。我这样做了,但仍然是一样的,p.waitFor()返回0,但MySQL服务器未启动,并且没有错误。
Process p = Runtime.getRuntime().exec("\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysqld.exe\"" + 
        " --defaults-file=\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini\"" +                 
        " --standalone" +                   
        " --secure-auth");          

StreamReader errorStreamReader = new StreamReader(p.getErrorStream());
StreamReader outputStreamReader = new StreamReader(p.getInputStream());


errorStreamReader.start();
outputStreamReader.start();

if(p.waitFor() == 0) {  

    return true;
}

return false;