Runtime.getRuntime() funciona em uma maquina e em outra não

3 respostas
d34d_d3v1l

fiz uma gui com alguns campos de configuração que chamam esta classe para realizar backup no postgressql...
ela funciona beleza no meu pc, roda e cria o arquivo. Uso Win7 Home ... Na maquina do cliente, Win 7 Ultimate,
o botao 'criar' trava e processo dump fica executando, mas o software rtava e o arquivo nao passa de 0bytes;;
alguem me ajuda ?

private void realizaBackup(String caminhoDoPg,String caminhoSalvar,String nomeArquivo) {
        Runtime r = Runtime.getRuntime();
        try {
            Process p = r.exec("\""+caminhoDoPg+"pg_dump.exe\" -i -h localhost -p 5432 -U postgres -F c -b -v -f \""+caminhoSalvar+""+nomeArquivo+".backup"+"\" ParceirosTst");
            if (p != null) {
                OutputStream outputStream = p.getOutputStream();
                outputStream.write("tux@2pg\r\n".getBytes());
                outputStream.flush();
                outputStream.close();
                InputStreamReader streamReader = new InputStreamReader(p.getErrorStream());
                BufferedReader reader = new BufferedReader(streamReader);
                String linha;
                int count=0;
                while ((linha = reader.readLine()) != null) {
                    progresso.setValue(count);
                    System.out.println(linha);
                    count++;
                }
                Mensagem.mensagemSucesso(null, "Backup realizado com sucesso!");
                labelStatus.setText("Concluído");
                progresso.setValue(0);
                
            }


        } catch (IOException ioe) {
            Mensagem.mensagemErro(null, "Erro ao realizar backup!");
            labelStatus.setText("Erro");
            ioe.printStackTrace();
        }
    }

3 Respostas

matheuslmota

Já viu se tem alguma coisa a ver com permissão de escrita nos diretórios?

d34d_d3v1l

Não tem não…

O problema é que o pg_dump fica esperando entrada do usuario… mas no meu pc funcionou
e em outro (do cliente) não

matheuslmota

E o que é que ele espera de entra do usuário? Você pode tentar enviar um “\n” para seu processo:

outputStream.write(10);
Criado 21 de outubro de 2011
Ultima resposta 21 de out. de 2011
Respostas 3
Participantes 2