Tem como executar um comando em DOS pelo JAVA?
Para quem conhece clipper, utiliza-se uma função chamada run() para excutar comandos e programas em DOS. Como se faz isso em JAVA?
Leia primeiro o que ele lhe passou.
Acredito que seja “mais ou menos” o que o Clipper faz, mas há alguns detalhezinhos (que são referentes ao fato que o DOS funciona diferentemente do Windows) que devem ser levados em conta. Por exemplo, no Clipper ao rodar um programa externo com run o Clipper fica esperando o programa terminar, mas no Windows você pode ou não ficar esperando o programa externo terminar. Então você não pode fazer as coisas sem entender direito o que se passa.
Depois que ler o que ele lhe passou, leia mais o seguinte artigo:
Boa tarde!
Tente isto:
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
try {
runtime.exec("notepad.exe"); // nome do aplicativo que deseja executar
} catch (IOException e) {
e.printStackTrace();
}
}
Abraço,
Eu utilizei esse comando aqui:
[code]
try{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(“c:\openssl\bin\openssl.exe genrsa -out priv_key.pem 1024”);
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ( (line = br.readLine()) != null)
{
System.out.println(line);
}
System.out.println("</OUTPUT>");
int exitVal = proc.waitFor();
System.out.println("ExitVAL: "+exitVal);
}catch(Throwable t){
t.printStackTrace();
}
}catch(Exception e){
e.printStackTrace();
}[/code]
Retorna essa mensagem de erro:
java.io.IOException: Cannot run program “c:\openssl\bin\openssl”: CreateProcess error=193, %1 não é um aplicativo Win32 válido
Rodando esse programa em uma linha de comando (c:\openssl\bin\openssl.exe) ele roda normalmente? Como você conseguiu esse openssl.exe (você o compilou manualmente ou então pegou uma distribuição binária?)
A saída de um openssl.exe com esses parâmetros deve ser algo parecido com a seguinte:
C:\>c:\openssl\bin\openssl genrsa -out priv_key.pem 1024
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
......++++++
...................++++++
e is 65537 (0x10001)
Depois de você conferir isso, é interessante você redirecionar a saída de erro (getErrorStream()), não a saída-padrão (getInputStream()).
Esse openssl roda no DOS assim como o que vc rodou, eu consegui gerar a chave pública aqui, através desse comando em java, meu openssl foi corronpido por algum processo que eu fiz. Muito obrigado pela ajuda