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: :frowning:](https://www.guj.com.br/images/emoji/twitter/frowning.png?v=9)
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: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
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: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
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: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
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: :grin:](https://www.guj.com.br/images/emoji/twitter/grin.png?v=9)
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?!?!?