exec.waitFor() duvida

5 respostas Resolvido
Renato_Wilder

Ola a todos alguém poderia me dar um ajuda de como utilizar o exec.waitFor() eu tenho o seguinte código abaixo

try {  
            exec = Runtime.getRuntime().exec("cmd /c " + sdlc + "\\proserve \"" + sban + "\\" + getNb() + "\\" + getEmp() + "\"" + " " + getParam());  
            if ( exec.waitFor()==0)
                 FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info: ", "BANCO INICIADO!")); 
            else 
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error!", "NAO FOI POSSIVEL INICIAR O BANCO."));
                
        
        }
        catch (IOException e) {  
            e.printStackTrace();  
        } catch (InterruptedException e) {  
            e.printStackTrace();
        }

só que sempre quando executo cai no if independente de estar certo ou errado, quando eu executo uma segunda vez com os mesmos parâmetros ele me devolve no prompt que já esta em uso e que terminou com o código de saída 1 pelo que entendi teria que me devolver a mensagem do else mas isso não ocorre só me devolve a mensagem do if, se alguém puder me dar uma luz fico grato.

5 Respostas

peczenyj

Ola

tente imprimir o valor do exitValue desse processo tambem

agora nem todos os processos retornam algo diferente de zero quando não funcionam corretamente. tem que analisar o exit code desse processo em especifico.

perceba que vc esta executando o cmd e o cmd pode então executar um outro processo e não necessariamente vai retornar 1 pq o subprocesso terminou com 1. leia o manual para ter certeza.

Renato_Wilder

Então utilizei o exitValue() em qualquer casa de certo ou errado ele só me retorna 0 tem alguma maneira de atribuir uma saída diferente caso o script não execute a ação desejada

peczenyj

cara TALVEZ vc consiga usar a variavel de ambiente errorlevel, veja se isso funcione

seu_comando.exe ; exit /b %errorlevel%
Renato_Wilder

tentei ficou na mesma ele e retorna 9009 estando certo ou errado a saída

peczenyj
Solucao aceita

entao talvez o problema esteja com o programa que vc quer rodar.

se vc nao consegue fazer um .bat ( ou JScript, ou VBScript ) sinalizar que deu algum problema, não vai ser o Java que vai conseguir

Criado 12 de setembro de 2016
Ultima resposta 13 de set. de 2016
Respostas 5
Participantes 2