Executar comandos do prompt de comando no java

Amigos,
ja vi isso em algum forum aqui do PJ, mas nao encontro mais. O que eu queria era um comando java estilo o “system” do c. Onde eu digito um comando e ele é executado como se eu estivesse digitando no prompt de comando. Ex:

system(“notepad teste”); ai ele me abre o arquivo teste no notepad. Como faço isso em java.
Obrigado

Runtime.getRuntime().exec("...");

Pô fabiofalci,

tentei a sua dica => Runtime.getRuntime().exec("…");

mas não funcionou. :frowning:

tenta exatamente assim

Runtime.getRuntime().exec("c:\windows\notepad.exe"); 

fabiofalci,
está exibindo o erro abaixo. O que pode ser isso.

teste2.java:4: unreported exception java.io.IOException; must be caught or declared to be thrown Runtime.getRuntime().exec("c:\windows\notepad.exe"); ^

voce tem que tratar uma possivel exceção nesse codigo…
tente assim:

try{
Runtime.getRuntime().exec(“c:\windows\notepad.exe”);
}
catch (IOException e)
{}

abraço

Olá maciel3000, vc esqueceu de tratar a exceção java.io.IOException… Vc pode fazer isso, com um bloco try catch… Fica assim:

<code>
try{
Runtime.getRuntime().exec(“c:\windows\notepad.exe”);
}
catch(IOException e){
e.printStackTrace();
}
</code>

Um abraço…
Jeferson…

Galera o erro que eu tinha passado realmente era pela falta do try/catch, mas agora o erro é outro.
Ele compila legal, mas na hora re rodar mostra a mensagem abaixo:

java.io.IOException: CreateProcess: c:\windows\notepad.exe error=3 at java.lang.Win32Process.create(Native Method) at java.lang.Win32Process.<init>(Win32Process.java:66) at java.lang.Runtime.execInternal(Native Method) at java.lang.Runtime.exec(Runtime.java:566) at java.lang.Runtime.exec(Runtime.java:428) at java.lang.Runtime.exec(Runtime.java:364) at java.lang.Runtime.exec(Runtime.java:326) at teste2.main(teste2.java:5)

Se eu entro com o código sem “c:\windows\” funciona. Só com o nome do arquivo executável, mas e se ele não estiver no path aí eu danço, né?

:slight_smile:

try{ Runtime.getRuntime().exec("notepad.exe"); } catch (IOException e) {}

[quote=“maciel3000”]Se eu entro com o código sem “c:\windows\” funciona. Só com o nome do arquivo executável, mas e se ele não estiver no path aí eu danço, né?

:slight_smile:

try{ Runtime.getRuntime().exec("notepad.exe"); } catch (IOException e) {} [/quote]
isso mesmo, voce tem que passar o caminho todo a partir de onde ta rodando seu programa java.

[quote=“javaAdicted”][quote=“maciel3000”]Se eu entro com o código sem “c:\windows\” funciona. Só com o nome do arquivo executável, mas e se ele não estiver no path aí eu danço, né?

:slight_smile:

try{ Runtime.getRuntime().exec("notepad.exe"); } catch (IOException e) {} [/quote]
isso mesmo, voce tem que passar o caminho todo a partir de onde ta rodando seu programa java.[/quote]

Como assim??? No caso no notepad o caminho estava todo descrito, mas não rolou. Como eu faço o caminho a partir de onde ta rodando seu programa???

cara, na unica vez que eu usei isso, eu tinha um executavel no mesmo diretorio do meu .class, entao so precisei colocar o nome do arquivo, tipo:

System.getRuntime().exec("executavel.bat");

o que falei :

é em relacao ao diretorio onde ta rodando o seu programa(e nao em relacao ao diretorio C:), ou seja, se voce ta rodando o .class a partir de uma pasta abaixo da pasta onde ta o executavel que voce quer rodar, acho que voce precisa voltar alguns diretorios, ou seja, o path tem que ser relativo ao endereco do .class

lembrando que o “…”, no windows pelo menos, sobe um nivel de diretorio.

disse isso porque em varias aplicacoes que conheco é assim, mas nao tenho certeza… se nao der certo, me desculpa ae por ter falado sem ter certeza ou sem testar :oops:

se nao funcionar, voce pode tambem dar uma olhada nesse metodo da API de Runtime.

espero que funcione

Valeu javaAdicted,
funcionou usando assim como você disse:

 Runtime.getRuntime().exec("..\..\..\winnt\notepad.exe"); 

Obrigado pela força. :grin:

Pessoal tenho uma aplicação desktop Java que necessita ler um arquivo txt. porém esse arquivo txt é proveniente de um .exe.

Quando clico num botão, ele chama o .exe dessa forma:

processo= Runtime.getRuntime().exec("nome_do_arquivo.exe " +parametros);

Depois disso é gerado o .txt que é usado na aplicação!!

Usando pelo netBeans funciona normamelte, porém no .JAR quando clico no botão a aplicação fecha rapidamente!!!
Obs: também tentei usando:
processo= Runtime.getRuntime().exec("cmd.exe /c start nome_do_arquivo.exe " +parametros);

Quem puder me ajudar, ficarei muito grato?!?!?