Olá pessoal,
Eu tinha uma chamada em Runtime que dava start ao serviço do Mysql com a classe Runtime.
Process p = Runtime.getRuntime().exec(caminho + "/MySql Server/bin/mysqld --install MYSQL " + '"' + "--defaults-file=" + caminho + "/MySql Server/my.ini" + '"');
Mas as ultimas atualizações bloquearam essa funcionalidade, explicado na documentação
http://www.oracle.com/technetwork/java/javase/7u21-relnotes-1932873.html#jruntime
Fiz alteração para utilizar a classe ProcessBuilder
String caminho = "C:/Program Files (x86)";
File fBD = new File(caminho + "/MySql Server/bin/mysqld");
File fArq = new File(caminho + "/MySql Server/my.ini");
String[] cmd = new String[4];
cmd[0] = fBD.getAbsolutePath();
cmd[1] = "--install";
cmd[2] = "MYSQL";
cmd[3] = "--defaults-file=" + fArq.getAbsolutePath() ;
ProcessBuilder pb = new ProcessBuilder(cmd);
File dirOut = new File("C:/out.txt");
File dirErr = new File("C:/err.txt");
pb.redirectOutput(dirOut);
pb.redirectError(dirErr);
Process p = pb.start();
try {
p.waitFor();
} catch (InterruptedException ex) {
ex.printStackTrace();
Logger.getLogger(app.class.getName()).log(Level.SEVERE, null, ex);
}
Mas agora tenho outro problema o serviço é criado só que o caminho binPath fica errado e não start o serviço
“C:\Program Files (x86)\MySql Server\bin\mysqld” “–defaults-file=C:\Program Files (x86)\MySql Server\my.ini” MYSQL
o correto seria,
“C:\Program Files (x86)\MySql Server\bin\mysqld” --defaults-file=“C:\Program Files (x86)\MySql Server\my.ini” MYSQL
quando utilizava a classe Runtime utilizava ‘"’ ou “”" para circundar a instrução --defaults-file, criando corretamente o caminho mas agora esse artificio não funciona no ProcessBuilder e não consigo mas fazer a chamada em Runtime… :shock: