Aew galera fiz um .bat e transformei em .exe para fazer backup do BD Postgres
agora fiço o java chamar esse .exe para gerar o backup do banco, mas estou tentando tratar a execução pra saber se deu algum problema mas nao esta dando certo
private void gerarBackupSaida() {
if (Constantes.IS_BKP_AUTO_SAIR) {
try {
Process p = Runtime.getRuntime().exec(Constantes.URL_EXE_BACKUP);
if (p.exitValue() == 0) {
JOptionPane.showMessageDialog(view, "Backup gerado com sucesso!");
} else {
JOptionPane.showMessageDialog(view, "Falha ao gerar backup!\nCaminho: "+Constantes.URL_EXE_BACKUP);
}
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(view, "Falha ao gerar backup!\nCaminho: "+Constantes.URL_EXE_BACKUP+"\n Erro: "+ e.getMessage());
} finally {
System.exit(0);
}
} else {
System.exit(0);
}
}
ele retorna 1 em p.exitValue(), mas o backup é gerado certinho, eu quero fechar a aplicação assim que terminar de fazer o backup e nao antes como resolvo esse problema?
E existe outra maneira de fazer backup do postgres diretamente do java?
Furacao, bom dia
Seguinte, não entendi muito bem o erro, pois você diz que o backup é gerado corretamente… Tipo me parece que o único problema é de fato mudar a condição do if para == 1 …
Que mensagem de erro que aparece no JOptionPane?
[quote=furacao123]mas quando eu chamo um exe pelo java ele roda o executavel por fora certo?
eu posso continuar usando a aplicação em java enquanto o exe é executado multitarefa?[/quote]
Pode. Só cuidado para não encerrar o processo da JVM antes de terminar o backup pois pode dar problema.
Uma coisa: você já tentou usar waitFor() no lugar de exitValue() no seu código?
[code]if (Constantes.IS_BKP_AUTO_SAIR) {
try {
Process p = Runtime.getRuntime().exec(Constantes.URL_EXE_BACKUP);
// le o retorno
Scanner retorno = new Scanner(p.getInputStream());
while (retorno.hasNextLine()) {
System.out.println(retorno.nextLine());
}
if (p.exitValue() == 0) {
JOptionPane.showMessageDialog(view, "Backup gerado com sucesso!");
} else {
JOptionPane.showMessageDialog(view, "Falha ao gerar backup!\nCaminho: " + Constantes.URL_EXE_BACKUP);
}
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(view, "Falha ao gerar backup!\nCaminho: " + Constantes.URL_EXE_BACKUP + "\n Erro: " + e.getMessage());
} finally {
System.exit(0);
}
} else {
System.exit(0);
}[/code]
// le o retorno
Scanner retorno = new Scanner(p.getInputStream());
while (retorno.hasNextLine()) {
System.out.println(retorno.nextLine());
}
e funcionou agora retornou 0 e gerou a mensagem Backup gerado com sucesso
mas nao entendi o que foi feito aqui para funcionar