Rodar comando no Solaris via JAVA (diff) Nada acontece!

Boa tarde.

Estou tentando rodar um comando via JAVA no Solaris, mas não tenho saida alguma quando executo:

Runtime.getRuntime().exec("diff arquivo1.txt arquivo.txt > diferencial.txt");

Nada acontece e não me retorna erro algum. Existe alguma particularidade do solaris em não executar este tipo de comando via programação? Pois pelo terminal, o comando acima funciona perfeitamente.

Alguma sugestão?

grato

Tente pegar o InpuStream através de :

InputStream input = Runtime.getRuntime().exec("diff arquivo1.txt arquivo.txt > diferencial.txt").getInputStream();

Daí vc lê o seu conteúdo do inputStream que é a saída do comando executado.

tente considerar que via de comando e um SHELL SCRIPT ou gere um delegando o que ele pode fazer CHMOD +++

Runtime.getRuntime().exec("/bin/sh /usr/local/apache-tomcat-6.0.18/webapps/axis/WEB-INF/lib/Features/UpdateBios.sh");

Quem interpreta o ">" é o shell (tipicamente /bin/bash ou /bin/sh ). você precisa instanciar o shell (mais ou menos como

Runtime.getRuntime().exec (new String[]{"/bin/bash", "-c", "diff arquivo1.txt arquivo2.txt > diferencial.txt"});

http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String[])

Legal.

Todas as opções foram validas.
Mas a mais viavel foi a do entanglement pois realmente eu não tinha ciência da necessidade de instanciar o shell .

Runtime.getRuntime().exec (new String[]{"/bin/bash", "-c", "diff arquivo1.txt arquivo2.txt > diferencial.txt"});  

Grato a todos.

Retomando o topico, fiz uma classe simples ontem para testar o comando sugerido pelo entanglement e funcionou perfeitamente. Porem quando eu incorporo a funcionalidade em uma classe ja existente dentro de um jar executavel, o arquivo de saida é gerado mas em branco!!!
Como pode funcionar em uma classe simples criada pelo terminal do solaris e não funcionar em uma classe que fica dentro do JAR ???

Runtime.getRuntime().exec (new String[]{"/bin/bash", "-c", "diff arquivo1.txt arquivo2.txt > diferencial.txt"});

A arquivo [b]diferencial.txt[b] é criado mas em branco. Ja tentei ver se poderia ser permissão de execução do JAR mas esta tudo certo…Muito estranho.

Runtime.getRuntime().exec (new String[]{"/bin/bash", "-c", "diff arquivo1.txt arquivo2.txt > diferencial.txt"});  

Perguntinha boboca - em que diretório você está executando o comando diff? Provavelmente ele não está achando os arquivos arquivo1.txt e arquivo2.txt, porque o diretório corrente é outro. Para evitar esse problema, eu recomendaria incluir o caminho completo:

Runtime.getRuntime().exec (new String[]{"/bin/bash", "-c", "diff /home/frosemberg/dados/arquivo1.txt /home/frosemberg/dados/arquivo2.txt > /home/frosemberg/dados/diferencial.txt"});  

Outra forma é incluir como um dos parâmetros de exec o diretório em que o comando deve ser iniciado. Por favor, verifique no javadoc de java.lang.Runtime como é que se passa esse parâmetro que é o diretório inicial.

Ele esta encontrando os arquivos sim porque eu executo o mesmo comando pelo prompt e funciona parfeitamente.
Estou passando o caminho dos arquivos.

O estranho é que em uma classe normal (public static void main) basica ele funciona que é uma beleza… passando todos os caminhos dos arquivos…mas no jar…nada…só cria o arquivo de saida vazio